一、题目描述
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
Examples:
s = "leetcode"
return 0.
s = "loveleetcode",
return 2.
思路:用一个map存储每个字母出现的次数,返回第一个值为1 的字符
c++代码1(200ms)
class Solution {
public:
int firstUniqChar(string s) {
int len=s.size(); //len为s 的长度
unordered_map<char, int> cnt;
for(int i=0; i<len; i++){
cnt[s[i]]++;
}//for
for(int i=0; i<len; i++){
if(cnt[s[i]] == 1)
return i;
}
return -1;
}
};
c++代码2(60ms)
class Solution {
public:
int firstUniqChar(string s) {
int alpha[26]={0};
for(int i=0; i<s.size(); i++){
alpha[s[i]-'a']++;
}//for
int i=0;
while(i<s.size() && alpha[s[i]-'a']>1){
i++;
}//while
return i==s.size()?-1:i;
}
};