题解 | #字符串排序#

字符串排序

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

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

struct ss{//构造结构体
    char c;//储存元素
    int num;//储存元素的先后输入顺序
};

//对结构体进行排序
bool cmp(struct ss s1 ,struct ss s2){
    if(toupper(s1.c)==toupper(s2.c))
        return s1.num<s2.num; //返回顺序靠前的 
    return toupper(s1.c)<toupper(s2.c);//返回字母小的
}

int main() {
     string s;
     vector<ss> vec;
     getline(cin,s);
     for(int i=0 ; i<s.size() ; i++){
        if(isupper(s[i])||islower(s[i])){
            struct ss st;
            st.c=s[i];
            st.num=i;
            vec.push_back(st);
        }
     }
     int n=0;
     sort(vec.begin(),vec.end(),cmp);
     for(int i=0 ; i<s.size() ; i++){
        if(isupper(s[i])||islower(s[i]))
            cout<<vec[n++].c;
        else 
            cout<<s[i];
     }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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