字符串合并处理

字符串合并处理

http://www.nowcoder.com/questionTerminal/d3d8e23870584782b3dd48f26cb39c8f

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

using namespace std;

bool strSort(string& str)
{
    string str1, str2;
    for(unsigned i = 0; i < str.size(); ++i)
    {
        if(i  & 0x01) str1 += str[i];
        else str2 += str[i];
    }
    sort(str1.begin(), str1.end());
    sort(str2.begin(), str2.end());
    for(unsigned i = 0; i < str.size(); ++i)
    {
        if(i & 0x01) str[i] = str1[i / 2];
        else str[i] = str2[i / 2];
    }
    return true;
}
void reverseC(char &c)
{
    unsigned bit_l = 0x08, bit_r = 0x01;
    char a = 0x00;
    while(bit_l)
    {
        if(c & bit_l) a |= bit_r;
        bit_l >>= 1;
        bit_r <<= 1;
    }
    if(a >= 0 && a <= 9) a += '0';
    else if(a >= 0x0A && a <= 0x0F) a = a - 0x0A + 'A';
    c = a;
}

int main()
{
    string str, str1, str2;
    
    while(cin >> str1 >> str2)
    {
        str = str1 + str2;
        strSort(str);
        for(unsigned i = 0; i < str.size(); ++i)
        {
            if(str[i] >= '0' && str[i] <= '9')
            {
                str[i] = str[i] - '0';
                reverseC(str[i]);
            }
            else if(str[i] >= 'a' && str[i] <= 'f')
            {
                str[i] = str[i] - 'a' + 10;
                reverseC(str[i]);
            }
            else if(str[i] >= 'A' && str[i] <= 'F')
            {
                str[i] = str[i] - 'A' + 10;
                reverseC(str[i]);
            }
        }
        cout << str << endl;
        str.clear();
        str1.clear();
        str2.clear();
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-03 10:14
求各位大佬帮忙改改简历提提建议
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写 可以看我帖子简历话术写法
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务