从键盘输入一个字符串,遇到“#”结束。去掉字符串中重复的字符,然后利用冒泡排序法对字符串中的字符按ASCII码值从小到大排序,并输出排序后的结果
时间: 2024-12-19 20:24:23 浏览: 25
当然,我们可以按照以下步骤完成这个任务:
1. 从键盘接收输入字符串直到遇到'#'为止。
2. 去掉字符串中的重复字符。
3. 使用冒泡排序算法对字符串进行排序。
首先,我们需要创建一个辅助函数来判断字符是否重复,以及另一个函数用于冒泡排序。这里使用`std::unordered_set`来快速去除重复字符。下面是完整的C++代码:
```cpp
#include <iostream>
#include <string>
#include <unordered_set>
#include <algorithm>
// 冒泡排序函数
void bubbleSort(std::string& str) {
int n = str.length();
for (size_t i = 0; i < n - 1; ++i) {
for (size_t j = 0; j < n - i - 1; ++j) {
if (str[j] > str[j + 1]) {
std::swap(str[j], str[j + 1]);
}
}
}
}
int main() {
std::string input;
std::cout << "Enter a string (ends with '#'): ";
getline(std::cin, input);
// 去除重复字符
std::unordered_set<char> uniqueChars;
for (char c : input) {
if (c != '#' && uniqueChars.find(c) == uniqueChars.end()) {
uniqueChars.insert(c);
}
}
// 将非'#'字符转换回字符串并排序
std::string result(uniqueChars.begin(), uniqueChars.end());
bubbleSort(result);
std::cout << "Sorted string: " << result << std::endl;
return 0;
}
```
在这个程序中,我们首先读取用户输入的字符串,然后遍历每个字符,只保留第一次出现的不重复字符。接着,我们将剩余的字符放入`std::unordered_set`,因为集合自动去重。然后,我们把集合转回字符串并用冒泡排序算法进行排序。最后,我们输出排序后的字符串。
阅读全文