给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
思路
本题要求解第一个不重复字符串出现的位置,可以使用hash来存放每个字母出现的次数
第一次遍历字符串,记录每个字符出现的次数。
第二次遍历字符串,找到第一个出现次数为1的字符下标。如果不存在,则返回-1。
代码
// C++ Version
class Solution {
public:
int firstUniqChar(string s) {
int mp[26] = {0};
for(int i = 0; i < s.size(); i++){
mp[s[i] - 'a']++;
}
for(int i = 0; i < s.size(); i++){
if(mp[s[i] - 'a'] == 1){
return i;
}
}
return -1;
}
};
// Go Version
func firstUniqChar(s string) int {
var mp [26]int
for i := 0; i < len(s); i ++{
mp[s[i] - 'a']++;
}
for i := 0; i < len(s); i ++{
if mp[s[i] - 'a'] == 1{
return i;
}
}
return -1;
}