题解 | #字符串合并处理#

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    string str1,str2;
    string tem;
    cin>>str1>>str2;
    str1+=str2;//字符串合并
    for (int i=0; i<str1.size(); i+=2) {
        
        tem.push_back(str1[i]);//找出偶数坐标元素
    }
    sort(tem.begin(), tem.end());//对找出的偶数坐标元素坐标排序
    int dou_size=tem.size();//记录偶数坐标元素个数
    for (int i=1; i<str1.size(); i+=2) {
        tem.push_back(str1[i]);//找出奇数坐标元素
    }
    sort(tem.begin()+dou_size, tem.end());//对奇数坐标元素排序
    int j=0;//偶数坐标元素插回起始点
    for (int i=0; i<dou_size; ++i) {
        str1[j]=tem[i];//插回偶数坐标元素
        j+=2;
    }
    j=1;
    for (int i=dou_size; i<tem.size(); ++i) {
        str1[j]=tem[i];//插回奇数坐标元素
        j+=2;
    }
    vector<char> toHex{'0','8','4','C','2','A','6','E','1','9','5','D','3','B','7','F'};//字符转换对照表
    for (auto elem : str1) {
        if (elem>='a'&&elem<='f') {
            elem=toHex[elem-'a'+10];//小写字母转换
        }
        else if (elem>='A'&&elem<='F') {
            elem=toHex[elem-'A'+10];//大写字母转换
        }
        else if (elem>='0'&&elem<='9') {
            elem=toHex[elem-'0'];//数字转换
        }
        cout<<elem;//输出字符串
    }
    
    

    
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务