本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出去重排序后的结果字符串。(用c++实现)
时间: 2024-03-14 20:48:16 浏览: 54
入一个字符,再输入一个以回车结束的字符串(少于80个字符)在字符串中查找该字符。.cpp
好的,以下是使用 C++ 实现的代码:
```c++
#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
int main() {
string s;
getline(cin, s); // 获取输入字符串
s.erase(remove_if(s.begin(), s.end(), [](const char &c) { // 去重
return count(s.begin(), s.end(), c) > 1;
}), s.end());
sort(s.begin(), s.end()); // 排序
cout << s << endl; // 输出结果
return 0;
}
```
这个程序首先使用 `getline()` 函数获取用户输入的字符串,并存储在 `s` 变量中。然后使用 `erase()` 函数和 `remove_if()` 算法去重,其中 `remove_if()` 算法接受一个 lambda 表达式,通过统计字符在字符串中出现的次数来判断是否重复。接下来使用 `sort()` 函数对字符串进行排序。最后输出去重排序后的结果字符串。
请注意,如果要处理多个输入字符串,可以将上述代码放在一个循环中,重复执行即可。同时需要注意,`getline()` 函数会读取输入行的所有字符,包括回车符,因此需要使用 `erase()` 函数去除回车符。
阅读全文