题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
先取奇偶字符串再各自排序,合并。最后转换直接用密码表
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
#include <math.h>
using namespace std;
int main(){
string s,s1,s2="";
cin>>s>>s1;
s+=s1; //合并
int len=s.size();
s1.clear();
int i,k;
//取奇偶
for(i=0;i+1<len;i+=2){
s1+=s[i];
s2+=s[i+1];
}
if(len%2){
s1+=s[len-1];
}
//排序
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
s.clear();
//合并
for(i=0;i+1<len;i+=2){
s+=s1[i/2];
s+=s2[i/2];
}
if(len%2){
s+=s1[len/2];
}
//转换
string ans="084C2A6E195D3B7F";
for(i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='F'){
k=s[i]-'A'+10;
s[i]=ans[k];
}else if(s[i]>='a'&&s[i]<='f'){
k=s[i]-'a'+10;
s[i]=ans[k];
}else if(s[i]>='0'&&s[i]<='9'){
k=s[i]-'0';
s[i]=ans[k];
}
}
cout<<s<<endl;
return 0;
}
查看14道真题和解析