题解 | #字符串排序#
字符串排序
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;
}
#华为机试#