力扣387
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
解题思路:整体难度不大,第一次遍历字符串利用哈希表载入字符出现次数,第二次遍历哈希表寻找只出现一次的字符即可。这里主要介绍一个哈希的方法。如果是字母哈希,可以利用数组的形式。创建26长度的数组,下标即可代表字母,内容可以代表出现次数。
class Solution {
public int firstUniqChar(String s) {
int len = s.length();
if(len==0) return -1;
int[] myHash = new int[26];
Arrays.fill(myHash,0);
//哈希表
for(int i=0;i<len;i++) {
myHash[s.charAt(i) - 'a']++;
}
int minIndex = len-1;
boolean isReturn = false;
for(int i=0;i<26;i++) {
char c = (char)(i+'a');
if(myHash[i] == 1 && s.indexOf(c)<=minIndex) {
minIndex = s.indexOf(c);
isReturn = true;
}
}
if(isReturn) return minIndex;
return -1;
}
}