题目链接:点击打开链接
思路:关键点就是用一个容量是26的数组来记录每个字母出现的次数。下标0-25分别映射到a-z。
Java参考代码如下:
public class Solution {
public int firstUniqChar(String s) {
// 使用一个容量为26的数组,使用下标0-25来映射a-z
int[] count = new int[26];
// 遍历输入的string,以 在当前字符所映射到的数字 为下标,对应下标存放的值+1
for(int i=0; i<s.length(); i++){
// 将当前字符转化为整数下标
int index = s.charAt(i) - 'a';
count[index] ++;
}
// 遍历string,对于当前字符,查看它所对应到的cout数组中的值是否为1,
// 是1则表示没有重复出现,返回它,程序结束;否则继续
for(int i=0; i<s.length(); i++){
// 将当前字符转化为整数下标
int index = s.charAt(i) - 'a';
if(count[index] == 1){
return i;
}
}
return -1;
}
}