给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = "leetcode" 返回 0 s = "loveleetcode" 返回 2
提示:你可以假定该字符串只包含小写字母。
我的代码(利用find()与rfind())
class Solution {
public:
int firstUniqChar(string s) {
for(int i=0;i<s.size();++i){
if(s.find(s[i],0)==s.rfind(s[i]))return i;
}
return -1;
}
};
高赞代码的思路:
class Solution {
public:
int firstUniqChar(string s) {
int hash[26]={0};
for(char n:s) //遍历s
hash[n-'a']++; //n-'a',得到该字母在数组中对应的索引
for(int i=0;i<s.size();i++)
if(hash[s[i]-'a']==1) //如果只出现了一次
return i;
return -1;
}
};