给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 输入: 示例: leetcode loveleetcode 输出: 0 2 提示:你可以假定该字符串只包含小写字母。
时间: 2024-02-11 21:10:02 浏览: 145
输入一串字符与已有字符串对照看是否重复
好的,这是一个关于字符串处理的问题。下面是 C++ 的代码实现:
```c++
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int firstUniqChar(string s) {
unordered_map<char, int> m;
for (char c : s) {
m[c]++; // 统计每个字符出现的次数
}
for (int i = 0; i < s.size(); i++) {
if (m[s[i]] == 1) { // 找到第一个出现次数为1的字符
return i;
}
}
return -1; // 所有字符都重复,返回-1
}
int main() {
string s1 = "leetcode";
string s2 = "loveleetcode";
cout << firstUniqChar(s1) << endl; // 输出 0
cout << firstUniqChar(s2) << endl; // 输出 2
return 0;
}
```
这里使用了哈希表来记录每个字符出现的次数,然后再遍历一遍字符串,找到第一个出现次数为1的字符即可。时间复杂度为 O(n),空间复杂度为 O(26)。
阅读全文