Question:
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.
Note: You may assume the string contain only lowercase letters.
Solution:
扫描一遍记录每个字母个数,扫描第二遍发现个数为1的就返回。不知道还有没有更简单的方法,这个方法没什么技术含量。
时间复杂度: O(n)
空间复杂度: O(n)
class Solution {
public:
int firstUniqChar(string s) {
if (s.size() == 0) {
return -1;
}
map<char, int> m;
for (int i = 0; i < s.size(); i++) {
if (m.find(s[i]) == m.end()) {
m[s[i]] = 1;
} else {
m[s[i]]++;
}
}
for (int i = 0; i < s.size(); i++) {
if (m[s[i]] == 1) {
return i;
}
}
return -1;
}
};