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

字符串合并处理

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

#include <iostream>
#include <set>
#include <string>
#include <algorithm>

using namespace std;

string shi2er(int n)
{
    char ch[2] = {'0','1'};
    string res_er;
    int mod;
    while(n){
        mod = n % 2;
        res_er += ch[mod];
        n = n/2;
    }
    for(int i=res_er.size();i<4;i++)
    {
        res_er += ch[0];
    }
    
    reverse(res_er.begin(),res_er.end());
    return res_er;
}

char ertochar(string str_in)
{
    int int_char = 0,k = 1;
    // for(int i=str_in.size();i<0;i--)
    // {
    //     int_char += k * (str_in[i] - '0');
    //     k = k * 2;
    // }
    for(int i=0;i<str_in.size();i++)
    {
        int_char += k * (str_in[i] - '0');
        k = k * 2;
    }
    // cout << "int_char" << int_char << endl;
    // 48 65 97  0~15 
    if(int_char<10){
        return int_char + '0';
    }else{
        return int_char - 10 + 'A';
    }
}


int main() {
    // int a, b;
    string a,b;
    char c; 
    while (cin >> a >> b) { // 注意 while 处理多个 case
        // cout << a  << " " <<  b << endl;
        //拼接字符串 
        //sort();
        string c;
        multiset<char> set_ji;
        multiset<char> set_ou;
        // set<int> bc;
        // set_ji.insert(0);
        // set_ou.insert(0);
        int len_a = a.size();
        int len_b = b.size();
        for(int i=0;i<len_a;i++)
        {
            if(i%2) //ji
            {
                set_ji.insert(a[i]);
            }
            else{ //ou 
                set_ou.insert(a[i]);
            }
        }
        for(int j=0;j<len_b;j++)
        {
            if((j+len_a)%2){
                set_ji.insert(b[j]);
            }else{
                set_ou.insert(b[j]);
            }
        }
        multiset<char>::iterator it_ou = set_ou.begin();
        multiset<char>::iterator it_ji = set_ji.begin();
        //char => int 
        //int => hex 
        //hex ==> char
        int shijinzhi;
        // for(int k=0;k<len_a + len_b;k++)
        while(it_ou != set_ou.end() || it_ji != set_ji.end())
        {
            if(it_ou != set_ou.end())
            {
                // cout << *it_ou << endl; 
                //panduan '0~9' 'a'~'z' 'A'~'Z'
                if('0' <= *it_ou && *it_ou <= '9'){
                    shijinzhi = *it_ou - '0';
                    cout << ertochar(shi2er(shijinzhi));
                }
                else if('a' <= *it_ou && *it_ou <= 'f'){
                    shijinzhi = *it_ou - 'a' + 10;
                    cout << ertochar(shi2er(shijinzhi));
                }
                else if('A' <= *it_ou && *it_ou <= 'F'){
                    shijinzhi = *it_ou - 'A' + 10;
                    cout << ertochar(shi2er(shijinzhi));
                }else{
                    cout << *it_ou;
                }
                // cout << int(*it_ou) << endl; 
                // cout << shijinzhi << endl;
                // cout << "shi2er " << shi2er(shijinzhi) << endl;
                // cout << ertochar(shi2er(shijinzhi));
                
                it_ou++;
            }
            if(it_ji != set_ji.end())
            {
                // cout << *it_ji  << endl;
                if('0' <= *it_ji && *it_ji <= '9'){
                    shijinzhi = *it_ji - '0';
                    cout << ertochar(shi2er(shijinzhi));
                }
                else if('a' <= *it_ji && *it_ji <= 'f'){
                    shijinzhi = *it_ji - 'a'+ 10;
                    cout << ertochar(shi2er(shijinzhi));
                }
                else if('A' <= *it_ji && *it_ji <= 'F'){
                    shijinzhi = *it_ji - 'A'+ 10;
                    cout << ertochar(shi2er(shijinzhi));
                }else{
                    cout << *it_ji;
                }
                // cout << int(*it_ji) << endl;
                // cout << shijinzhi << endl;
                // cout << "shi2er " << shi2er(shijinzhi) << endl;
                
                it_ji++;
            }
        }
        cout << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

10-27 02:29
已编辑
门头沟学院 嵌入式工程师
牛客72783561...:简历不是这么写的,你这两个项目只说了用到了什么技术,却没说取得了什么成果,在我看来这就是你自己做的一个demo,没有价值。你为什么不写你电赛国二的那个项目?
点赞 评论 收藏
分享
投递亚信科技(中国)有限公司等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务