题解 | #字符串排序#
字符串排序
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")