将各个字母的输入顺序存储到数组/C++
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
char to_upper(char c){ //统一转换成大写
if(c>= 'A' && c <='Z')
return c;
else
return c-32;
}
//
string transfer(string &str){
vector<vector<char>> vec(26); //对应26个字母,每个字母的顺序记录在vec的相应位置上
vector<char> seq; //将vec线性化
string ans;
// 按输入顺序取出所有字母
for(char c: str){
if(isalpha(c)){
vec[to_upper(c) - 'A'].push_back(c);
}
}
// 拍扁
for(int i = 0; i <26; i++){
for(int j = 0; j < vec[i].size(); j++)
seq.push_back(vec[i][j]);
}
// for(int i = 0; i <seq.size(); i++)
// cout<<seq[i]<<endl;
int p=0;
for(char c: str){
if(isalpha(c)){
ans+=seq[p];
p++;
}else
ans+=c;
}
return ans;
}
int main(){
string str;
getline(cin, str);
cout<< transfer(str)<<endl;
return 0;
}
查看8道真题和解析