您的位置:首页 > 编程语言 > Java开发

第一个只出现一次的字符(Java实现)

2017-05-09 13:56 211 查看
本题为剑指offer面试题35

牛客网测试地址:https://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c

时间限制:1秒空间限制:32768K
 算法知识视频讲解

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。如果字符串为空,返回-1

package go.jacob.day509;

/*
* 字符char的范围是-128到127,不仅仅是a-z
*/
public class Demo2 {
public int FirstNotRepeatingChar(String str) {
if (str == null || str.equals(""))
return -1;
char[] chars = str.toCharArray();
int[] arr = new int[256];

for (int i = 0; i < chars.length; i++)
arr[hash(chars[i])]++;

int index = 0;
for (int i = 0; i < chars.length; i++) {
if (arr[hash(chars[i])] == 1) {
index = i;
break;
}
}
return index;
}

// 为字符建立哈希映射,映射数组的下标
private int hash(char c) {
return c + 128;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐