题解 | #字符串排序#
字符串排序
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")
