用c++实现找出字符串(字符串由小写字母组成)中第一个只出现一次的字符 【样例输入1】happy 【样例输出1】h 【样例输入2】amusing 【样例输出2】a 【样例输入3】google 【样例输出3】l
时间: 2023-11-13 07:28:42 浏览: 158
这是一道关于字符串操作的编程题,可以使用 C 语言的字符数组和循环语句来实现。以下是一种简单的解法:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN + 1];
int freq[26] = {0};
int i, len;
// 读入字符串
scanf("%s", str);
len = strlen(str);
// 统计字符频次
for (i = 0; i < len; i++) {
freq[str[i] - 'a']++;
}
// 找出第一个只出现一次的字符
for (i = 0; i < len; i++) {
if (freq[str[i] - 'a'] == 1) {
printf("%c\n", str[i]);
return 0;
}
}
// 如果找不到,则输出空行
printf("\n");
return 0;
}
如果您有更好的解法或者对程序有疑问,都可以留言讨论。
相关问题
题目描述 给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。 输入 一个字符串,长度小于100000。 输出 输出第一个仅出现一次的字符,若没有则输出no。 样例输入 复制 abcabd 样例输出 复制 c c++实现
题目描述:
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入:
一个字符串,长度小于100000。
输出:
输出第一个仅出现一次的字符,若没有则输出no。
样例输入:
abcabd
样例输出:
c
实现:
```
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
string str;
map<char,int> mp;
cin>>str;
int n=str.size();
for(int i=0;i<n;i++)
{
mp[str[i]]++;
}
for(int i=0;i<n;i++)
{
if(mp[str[i]]==1)
{
cout<<str[i];
return 0;
}
}
cout<<"no"<<endl;
return 0;
}
```
注意事项:
1. 要使用map容器记录每个字符出现的次数。对于一个字符,第一次出现时计数器加1,第二次出现时计数器再加1。
2. 依次扫描字符串,找到第一次计数器为1的字符,输出即可。如果扫描完整个字符串都没有找到计数器为1的字符,说明没有符合要求的字符,输出no。
描述 输入一个字符串(只包含小写字母),按照字符串原有的顺序输出(相同字符的只保留一个),例如输入ccbba,输出cba 输入 输入一个字符串(只包含小写字母),按照字符串原有的顺序输出(相同字符的只保留一个),例如输入ccbba,输出cba 输出 按照字符串原有的顺序输出(相同字符的只保留一个) 输入样例 1 bdcabde 输出样例1 bdcae c++ 代码
你可以使用一个哈希集合来记录已经出现过的字符,然后遍历字符串,如果当前字符不在哈希集合中,就将其加入结果字符串,并将其加入哈希集合中。最后返回结果字符串即可。
以下是一个示例的C++代码实现:
```cpp
#include <iostream>
#include <unordered_set>
using namespace std;
string removeDuplicates(string s) {
string result = "";
unordered_set<char> seen;
for (char c : s) {
if (seen.find(c) == seen.end()) {
result += c;
seen.insert(c);
}
}
return result;
}
int main() {
string input;
cout << "请输入一个字符串:";
cin >> input;
string output = removeDuplicates(input);
cout << "输出结果:" << output << endl;
return 0;
}
```
输入示例:
```
ccbba
```
输出示例:
```
cba
```
阅读全文