给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.
注意事项:您可以假定该字符串只包含小写字母。
思路:寻找字符串中的第一个不重复出现的字符,一种判断的思路是:某个字符的首次出现位置与最后出现位置相同,则可判断该字符在字符串中不重复。调用头文件<string>中的两个函数 find_first_of() 和 find_last_of() ,各自返回值为首次出现位置和末次出现位置,当两个返回值相等是,得到不重复出现的字符。
class Solution {
public:
int firstUniqChar(string s) {
for(int i = 0 ; i < s.size() ; i ++)
{
if(s.find_first_of(s[i]) == s.find_last_of(s[i]))
return i;
}
return -1;
}
};
int firstUniqChar(string s)
{
int counter[26] = {0};
for(int i=0; i<s.length(); ++i)
++counter[s[i] - 'a'];
for (int i=0; i<26; ++i)
{
if(1 == counter[s[i] - 'a'] )
return i;
}
return -1;
}