C++给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
时间: 2023-10-30 17:16:08 浏览: 158
可以使用哈希表来解决这个问题。遍历一遍字符串,将每个字符出现的次数记录在哈希表中。然后再遍历一遍字符串,找到第一个出现次数为1的字符即可。
C++代码如下:
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
string s;
cin >> s;
unordered_map<char, int> count;
for (char c : s) {
count[c]++;
}
for (char c : s) {
if (count[c] == 1) {
cout << c << endl;
return 0;
}
}
cout << "no" << endl;
return 0;
}
```
时间复杂度为 O(n),空间复杂度为 O(字符集大小)。
相关问题
c++ 给定一个只包含小写字母的字符串,请你找到仅出现一次的字符。如果没有,输出no。
C++代码:
```cpp
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
string s;
getline(cin, s); // 读入字符串
unordered_map<char, int> umap; // 定义哈希表(记录每个字符出现的次数)
for (char c : s) {
umap[c]++;
}
bool flag = false; // 是否找到仅出现一次的字符的标志
for (char c : s) {
if (umap[c] == 1) { // 找到了仅出现一次的字符
cout << c << endl;
flag = true;
break;
}
}
if (!flag) { // 没有找到仅出现一次的字符
cout << "no" << endl;
}
return 0;
}
```
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。 C++
可以使用哈希表来解决这个问题。对于每个字符,我们可以记录它出现的次数,然后再遍历一遍字符串,找到第一个出现次数为 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
```
阅读全文