给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 输入: 示例: leetcode loveleetcode 输出: 0 2 提示:你可以假定该字符串只包含小写字母。
时间: 2024-02-11 22:10:02 浏览: 132
好的,这是一个关于字符串处理的问题。下面是 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)。
相关问题
Python给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
方法一:
```python
def first_not_repeating_char(strings):
chars = []
times = []
for s in strings:
if s not in chars:
chars.append(s)
times.append(1)
else:
char_index = chars.index(s)
times[char_index] += 1
for t in times:
if t == 1:
times_index = times.index(t)
return chars[times_index]
return -1
strings = input('请输入长字符串:')
print('结果:', first_not_repeating_char(strings))
```
方法二:
```python
from collections import Counter
def deal_str(s):
counter = Counter(s)
singles = [_c for _c, _i in counter.items() if _i == 1]
idxs = [s.index(_c) for _c in singles]
idx = min(idxs) if idxs else -1
print(f"字符串({s})中的第一个不重复字符的位置是({idx})")
string = "abcab"
deal_str(string)
```
方法三:
```python
def deal_str2(s):
my_dict = {}
idx = -1
for _i, _c in enumerate(s):
if _c not in my_dict:
my_dict[_c] = _i
else:
my_dict[_c] = 9999
idx = min(my_dict.values())
idx = -1 if idx >= 9999 else idx
print(f"字符串({s})中的第一个不重复字符的位置是({idx})")
string = "abcab"
deal_str2(string)
```
python获取字符串中的第一个唯一字符。 要求:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
在Python中,你可以通过创建一个字典来跟踪每个字符的出现次数,然后遍历字符串查找第一个未出现在字典中的字符。以下是一个简单的函数实现这个功能:
```python
def first_unique_char(s):
char_count = {}
for i, char in enumerate(s):
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
for index, char in enumerate(s):
if char_count[char] == 1:
return index
# 如果没有找到唯一的字符,返回 -1
return -1
```
在这个函数中,我们首先初始化一个空字典`char_count`,然后遍历输入字符串`s`的每一个字符。对于每个字符,如果它已经在字典中,我们就增加计数;如果不在,就添加到字典并设置计数为1。接着,我们再次遍历字符串,当遇到计数为1的字符时,说明找到了第一个唯一字符,返回其索引。如果没有找到这样的字符,函数最后返回-1。
阅读全文