用c++语言实现给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
时间: 2023-10-30 12:08:01 浏览: 92
可以使用哈希表来解决这个问题,具体的实现思路如下:
1. 创建一个大小为 26 的数组,表示小写字母的出现情况,初始化为 0。
2. 遍历字符串的每一个字符,将其转换为数组下标,将对应的数组值加一。
3. 再次遍历字符串的每一个字符,查找对应的数组值是否为 1,如果是,则说明该字符仅出现了一次,直接返回该字符。
4. 如果遍历完整个字符串都没有找到仅出现一次的字符,则返回 "no"。
下面是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
string findFirstUniqueChar(string s) {
int count[26] = {0};
for (int i = 0; i < s.length(); i++) {
count[s[i] - 'a']++;
}
for (int i = 0; i < s.length(); i++) {
if (count[s[i] - 'a'] == 1) {
return string(1, s[i]);
}
}
return "no";
}
int main() {
string s = "leetcode";
cout << findFirstUniqueChar(s) << endl; // l
return 0;
}
```
相关问题
c++实现:给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no
下面是使用C++编写的程序,可以找到给定字符串中第一个仅出现一次的字符:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
char findFirstUniqueChar(string s) {
unordered_map<char, int> charCount;
// 统计每个字符出现的次数
for (char c : s) {
charCount[c]++;
}
// 找到第一个仅出现一次的字符
for (char c : s) {
if (charCount[c] == 1) {
return c;
}
}
return ' ';
}
int main() {
string s;
cout << "请输入一个只包含小写字母的字符串:";
cin >> s;
char firstUniqueChar = findFirstUniqueChar(s);
if (firstUniqueChar != ' ') {
cout << "第一个仅出现一次的字符是:" << firstUniqueChar << endl;
} else {
cout << "no" << endl;
}
return 0;
}
```
你可以将以上代码保存为一个.cpp文件,然后使用C++编译器编译并运行该程序。程序会提示你输入一个只包含小写字母的字符串,然后输出第一个仅出现一次的字符,如果没有则输出"no"。
用c++编写:给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no
好的,我可以帮你用 C++ 编写。这里提供一种基于哈希表的解法,时间复杂度为 O(n)。
```c++
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
char firstUniqChar(string s) {
unordered_map<char, int> count; // 定义哈希表
for (char c : s) {
count[c]++; // 统计每个字符出现的次数
}
for (char c : s) {
if (count[c] == 1) { // 找到第一个出现次数为1的字符
return c;
}
}
return 'n'; // 没有找到
}
int main() {
string s = "leetcode";
char c = firstUniqChar(s);
if (c != 'n') {
cout << "第一个仅出现一次的字符是:" << c << endl;
} else {
cout << "no" << endl;
}
return 0;
}
```
以上代码中,我们使用了 `unordered_map` 类型的哈希表来存储每个字符出现的次数。具体来说,我们遍历字符串 `s`,统计每个字符出现的次数,然后再次遍历 `s`,找到第一个出现次数为 1 的字符即可。如果没有找到,则返回 `n`,输出 `no`。
阅读全文