题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include<iostream> #include<map> #include <string> using namespace std; int main() { string s1; multimap<char, char> mp; getline(cin, s1); for (int i = 0; i < s1.size(); i++) { if (s1[i] >= 'A' && s1[i] <= 'Z') mp.insert({s1[i], s1[i]}); else if (s1[i] >= 'a' && s1[i] <= 'z') mp.insert({s1[i] + 'A' - 'a', s1[i]}); } string sorts1; for (auto j : mp) { sorts1 += j.second; } int count = -1; for (int i = 0; i < s1.size(); i++) { if (sorts1.find(s1[i]) != string::npos) { count += 1; cout << sorts1[count]; } else { cout << s1[i]; } } return 0; 使用multimap 排序,关键字采用大写字母排序,先选出来字母项,值存原来的值,然后遍历输出,遇到字母输出map容器值,非字母输出原值