题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector<string> tmp(26);
string input;
getline(cin,input);
// 记录每个字母的大小顺序
for(const auto& ch:input){
if(ch>='a'&&ch<='z')
tmp[ch-'a'].push_back(ch);
if(ch>='A'&&ch<='Z')
tmp[ch-'A'].push_back(ch);
}
// p1指针,记录当前遍历到的input的位置input[p1]
int p1 = 0;
string res;
// 先把tmp数组倒空
for(const auto& it:tmp){
for(int i=0; i<it.size(); i++){
if((input[p1]>='a'&&input[p1]<='z')||(input[p1]>='A'&&input[p1]<='Z'))
res += it[i];
else{
res += input[p1];
i--;
}
p1++;
}
}
// 如果input是以非字母结尾,res会短一截,要补齐
for(int i=res.size(); i<input.size(); i++)
res += input[i];
cout << res << endl;
}
查看16道真题和解析