题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <iostream>
#include <sstream>
#include <string>
#include <queue>
#include <map>
#include <bitset>
using namespace std;
bool check[1005];
bitset<4> bt[1005];
int main() {
string s;
getline(cin,s);
priority_queue<pair<char,int>, vector<pair<char,int>>, greater<pair<char,int>>> pq;
for(int i=0;i<s.length();i++){
if(tolower(s[i])>='a'&&tolower(s[i])<='z'){
pq.push(make_pair(tolower(s[i]),i));
if(s[i]<='Z'&&s[i]>='A') bt[i].set(1);
else if(s[i]<='z'&&s[i]>='a') bt[i].set(2);
}
else bt[i].set(3);
}
string result="";
for(int i=0;i<s.length();i++){
if(bt[i].test(3)) result+=s[i];
else {
result+=s[pq.top().second];
pq.pop();
}
}
cout<<result;
}
// 64 位输出请用 printf("%lld")

