题解 | #字符串合并处理#
字符串合并处理
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; }