문자열 정렬 (C ++ Niuke Net)

문제 해결 아이디어 :

(1) 문자 저장 및 정렬

(2) 문자가 아닌 순서대로 삽입

#include<iostream>
#include<cctype>
#include<utility>
#include<vector>
#include<algorithm>
#include<string>

using namespace std;

int main() {
    string str;
    while(getline(cin,str)) {
        
        vector<pair<char,int>> v1,v2;
        for(int i=0;i<str.length();i++) {
            if(isalpha(str[i])) v1.push_back(pair(str[i],i));
            else v2.push_back(pair(str[i],i));
        }
        
        auto comp=[&](const pair<char,int> &a,const pair<char,int> &b) {
            if(tolower(a.first)<tolower(b.first)) return true;
            else if(tolower(a.first)>tolower(b.first)) return false;
            else if(a.second<b.second) return true;
            else return false;
        };
        
        sort(v1.begin(),v1.end(),comp);
        
        string s="";
        for(int i=0;i<v1.size();i++) {
            s+=v1[i].first;
        }
        
        for(int i=0;i<v2.size();i++) {
            s.insert(v2[i].second,1,v2[i].first);
        }
        cout<<s<<endl;
    }
    
    
    return 0;
}

 

추천

출처blog.csdn.net/coolsunxu/article/details/114837573