题目:
387.字符串中的第一个唯一字符Given a string, find the first non-repeating character in it and return its index. If it doesn't exist, return -1.
找出字符串中的第一个唯一(不重复)字符;不存子啊返回-1
分析:
暴力破解时间复杂度依旧为O(n^2);
此外还有许多其他方法,这里就不介绍了,包括hash;
解决方案:
循环26个字母,统计每个字母出现次数为1的字母,写入按出现的index排序的数组;
然后取数组里最前面的那个;或者为空时是-1;
class Solution {
public int firstUniqChar(String s) {
// 创建一个记录各字母出现频率的数组
int freq[] = new int[26];
for (int i = 0; i < s.length(); i ++){
freq[s.charAt(i) - 'a'] ++;
}
for (int i = 0; i < s.length(); i ++){
if(freq[s.charAt(i) - 'a'] == 1){
return i;
}
}
return -1;
}
}