问题描述
编写一个程序,输入一组字符(只包含字母,且长度小于100,回车结束输入),该字符数组中只有一个字符出现的次数为奇数,其他字符出现的次数均为偶数,输出出现次数为奇数的字符。
思路就是再定义一个数组,遍历字符遇到一个字符,判断数组中是否有,没有加入数组,有的话从数组删除,留下的那个输出
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main() {
string s;
cin >> s;
unordered_set<char> arr;
for (char c : s) {
auto it = arr.find(c);
if (it != arr.end()) {
arr.erase(it);
} else {
arr.insert(c);
}
}
for (char c : arr) {
cout << " " << c;
}
return 0;
}
典型的异或了
【以下回答由 GPT 生成】
这个问题是一个典型的统计字符出现次数的问题,目标是找到在输入字符中只出现了奇数次的字符,并输出它们。
以下是一个可能的解决方案,使用C++编写:
>>
,并结合一个循环来逐个读取字符,直到遇到回车键结束。%
,如果一个整数对2取余的结果不等于0,则表示它是奇数。下面是具体的代码实现:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> charCount(26, 0); // 初始化长度为26的数组
char input;
while (cin >> input && input != '\n') {
char lower = tolower(input); // 将字符转换为小写字母
if (lower >= 'a' && lower <= 'z') {
int index = lower - 'a';
charCount[index]++;
}
}
for (int i = 0; i < 26; i++) {
if (charCount[i] % 2 != 0) {
char oddChar = 'A' + i; // 将下标转换为对应的大写字母
cout << oddChar << " ";
}
}
return 0;
}
这个程序通过使用一个数组记录字符出现次数,然后遍历数组找到出现次数为奇数的字符,并输出。
请注意,这个解决方案假定输入只包含字母,其他字符会被忽略。如果需要处理其他字符,请根据具体需求进行修改。
希望以上解决方案能够对您有所帮助。
【相关推荐】