题解 | #字符串排序#

字符串排序

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")

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务