题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct sor{
    char c;
    int  t;
};
bool cmp(sor a,sor b){//排序算法:将所有大写转小写;按字母顺序排序,相同按时间排序
    if(a.c>='A'&&a.c<='Z'){
        a.c = a.c-'A'+'a';
    }if(b.c>='A'&&b.c<='Z'){
        b.c = b.c-'A'+'a';
    }
    if(a.c==b.c) return a.t<b.t;
    return a.c<b.c;
}

int main(){
    
    string s;
    getline(cin,s);
    vector<sor> arr;
    for(int i = 0;i<s.size();i++){
        if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
            sor tmp ;
            tmp.c = s[i];
            tmp.t = i;  
            arr.push_back(tmp);
        }  
    }
    sort(arr.begin(),arr.end(),cmp);
//     for(int i = 0;i<arr.size();i++){
//         cout<<arr[i].c<<" ";
//     }
    
    int j =0;
    for(int i= 0;i<s.size();i++){
        if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
            cout<<arr[j].c;
            j++;
        }else{
            cout<<s[i];
        }
    }
    return 0;
}

#华为机试#
全部评论

相关推荐

12-15 18:00
巨人网络_招聘
投递巨人网络等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务