给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。 C++
时间: 2023-08-14 17:12:15 浏览: 69
可以使用哈希表来解决这个问题。对于每个字符,我们可以记录它出现的次数,然后再遍历一遍字符串,找到第一个出现次数为 1 的字符即可。
具体实现如下:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
char findFirstUniqueChar(string s) {
unordered_map<char, int> count;
for (char c : s) {
count[c]++;
}
for (char c : s) {
if (count[c] == 1) {
return c;
}
}
return ' ';
}
int main() {
string s = "abaccdeff";
char res = findFirstUniqueChar(s);
if (res == ' ') {
cout << "no" << endl;
} else {
cout << res << endl;
}
return 0;
}
```
输出结果为:
```
b
```
相关问题
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no
### 回答1:
解题思路:
可以使用哈希表来记录每个字符出现的次数,然后再遍历一遍字符串,找到第一个出现次数为1的字符即可。
代码实现:
```python
def first_unique_char(s):
# 构建哈希表
hash_map = {}
for c in s:
if c in hash_map:
hash_map[c] += 1
else:
hash_map[c] = 1
# 遍历字符串,找到第一个出现次数为1的字符
for c in s:
if hash_map[c] == 1:
return c
# 如果没有,输出no
return "no"
```
测试样例:
```python
print(first_unique_char("leetcode")) # 输出 "l"
print(first_unique_char("loveleetcode")) # 输出 "v"
print(first_unique_char("aabbcc")) # 输出 "no"
```
### 回答2:
题目描述:
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
解题思路:
这道题目可以使用哈希表来解决。将字符串s中的每一个字符都遍历一遍,并统计每个字符出现的次数,存储到哈希表中。最后再遍历一遍字符串s,在哈希表中找到第一个出现次数为1的字符,即为所求的答案。
Python 代码实现:
class Solution:
def firstNotRepeatingChar(self, s: str) -> str:
if not s:
return "no"
hash_map = {}
# 统计每个字符出现的次数
for i in s:
if i not in hash_map:
hash_map[i] = 1
else:
hash_map[i] += 1
# 遍历每个字符,在哈希表中找到第一个出现次数为1的字符
for i in s:
if hash_map[i] == 1:
return i
# 没有出现次数为1的字符
return "no"
时间复杂度:O(n),其中n为字符串的长度。需要遍历两次字符串s,哈希表的插入和查询操作都是O(1)的。
空间复杂度:O(26),因为只包含小写字母,所以哈希表的大小为26。
### 回答3:
这道题目其实就是要找到字符串中出现次数为1的第一个字符。具体思路可以用哈希表实现。首先需要遍历字符串,把每个字符出现的次数记录到哈希表中。然后再次遍历字符串,找到出现次数为1的第一个字符即可。时间复杂度为O(n)。
具体步骤如下:
1. 遍历字符串,把每个字符出现的次数记录到哈希表中。
2. 再次遍历字符串,找到出现次数为1的第一个字符,输出即可。
3. 如果没有找到出现次数为1的字符,则输出no。
下面是具体实现的代码:
```python
def find_first_unique_char(s:str) -> str:
dic = {}
for ch in s:
if ch in dic:
dic[ch] += 1
else:
dic[ch] = 1
for ch in s:
if dic[ch] == 1:
return ch
return "no"
```
需要注意的是,这里的哈希表可以用Python中的字典实现,键为字符,值为该字符出现的次数。
如果要考虑字符集比较大的情况,可以使用数组代替哈希表实现。需要开一个长度为26的数组记录每个字符出现的次数。具体代码如下:
```python
def find_first_unique_char(s:str) -> str:
cnt = [0 for _ in range(26)]
for ch in s:
cnt[ord(ch) - ord('a')] += 1
for ch in s:
if cnt[ord(ch) - ord('a')] == 1:
return ch
return "no"
```
时间复杂度和空间复杂度均为O(1)。
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
可以使用哈希表来实现。首先遍历一遍字符串,将每个字符出现的次数存储到哈希表中。然后再遍历一遍字符串,找到第一个出现次数为1的字符即可。
以下是 Python 代码实现:
```python
def first_unique_char(s):
freq = {}
# 统计每个字符出现的次数
for ch in s:
freq[ch] = freq.get(ch, 0) + 1
# 找到第一个出现次数为1的字符
for ch in s:
if freq[ch] == 1:
return ch
return "no"
```
测试一下:
```python
s = "abaccdeff"
print(first_unique_char(s)) # b
s = "aaaabbbbcccc"
print(first_unique_char(s)) # no
```
阅读全文