代码解析:
使用了哈希表 unordered_map 来统计每个字符的出现次数。
首先,定义了一个函数 findFirstUniqueChar,它的输入参数是一个字符串 s,表示要查找的字符串。函数返回第一个仅出现一次的字符。
在函数内部,创建了一个哈希表 count,用于存储每个字符的出现次数。然后,使用一个循环遍历字符串 s 中的每个字符,并在哈希表 count 中增加对应字符的计数。
接下来,再次遍历字符串 s 中的每个字符,对于每个字符,检查其在哈希表 count 中的计数。如果计数为1,则说明该字符是第一个仅出现一次的字符,立即返回该字符。
如果没有找到仅出现一次的字符,那么最后返回一个特定的标记字符 'no',表示没有出现次数只有一次的字符。
在 main 函数中,我们首先读入输入的字符串 s。
然后,我们调用 findFirstUniqueChar 函数来查找第一个仅出现一次的字符,并将结果存储在变量 result 中。
最后,我们输出结果字符 result。
参考代码:
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
char findFirstUniqueChar(const string& s) {
unordered_map<char, int> count;
// 统计每个字符的出现次数
for (char ch : s) {
count[ch]++;
}
// 找到第一个仅出现一次的字符
for (char ch : s) {
if (count[ch] == 1) {
return ch;
}
}
return 'no';
}
int main() {
string s;
cin >> s;
char result = findFirstUniqueChar(s);
cout << result << endl;
return 0;
}
0.0分
19 人评分
#include <iostream> #include <cstring> using namespace std; int main() { char ch[100000]; int x, a[26] = { 0 }, y = 1; cin >> ch; x = strlen(ch); for (int j = 0; j < x; j++) { a[ch[j] - 97]++; } for (int i = 0; i < 26; i++) { if (a[i] == 1) { cout << ch[i]; break; } } if (y == 0) { cout << "no"; } return 0; }这个哪里出问题了啊?
printf基础练习2 (有点不明白)浏览:887 |
【排队买票】 (C语言代码)浏览:944 |
WU-图形输出 (C++代码)浏览:836 |
wu-淘淘的名单 (C++代码)浏览:1532 |
1011题解浏览:819 |
罗列完美数 (C语言代码)浏览:519 |
局部变量作函数返回值的问题浏览:1028 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:852 |
整数分类问题 为什么输出总是数字8啊浏览:451 |
小九九 (C++代码)简单粗暴,直接输出浏览:683 |