给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
思路
建立一个map<char int>,存放每个字符出现的次数。
总共遍历两次字符串,第一遍先记录每个字符在字符串中的出现次数,第二次从头查找 第一次出现次数为一的字符所在的位置返回即可。
C++
class Solution {
public:
int firstUniqChar(string s) {
map<char, int> m;
for(int i=0;i<s.size();i++){
if(m.find(s[i])!=m.end()){
m[s[i]] = m[s[i]]+1;
}else{
m.insert(pair<char, int>(s[i], 1));
}
}
for(int i=0;i<s.size();i++){
if(m[s[i]] == 1){
return i;
}
}
return -1;
}
};
网友评论