题解 | #字符串排序#
字符串排序
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容器值,非字母输出原值
