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

字符串合并处理

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

#include <iostream>
#include <string>
#include <set>
using namespace std;

int bitReverse(int num){
    if(num == 0){
        return 0;
    }
    int res = 0;
    int i = 0;
    while(i < 4){
        res <<= 1;
        res += num & 1;
        num >>= 1;
        ++i;
    }
    return res;
}

char processChar(char c){
    char res;
    int num = 0;
    if(c >= 'a' && c <= 'f'){
        num = bitReverse((int)c - 87);
    }
    else if(c >= 'A' && c <= 'F'){
        num = bitReverse((int)c - 55);
    }
    else if(c >= '0' && c <= '9'){
        num = bitReverse((int)c - 48);
    }
    else{
        return c;
    }

    if(num >= 0 && num <= 9){
        res = (char)num + '0';
    }
    if(num >= 10 && num <= 15){
        res = (char)num + '7';
    }
    return res;
}

int main(int argc, char* argv[]){
    string str1, str2;
    cin >> str1 >> str2;

    string str = str1 + str2;
    multiset<char> evens;
    for(int i = 0; i < str.size(); i += 2){
        evens.insert(str[i]);
    }
    multiset<char> odds;
    for(int i = 1; i < str.size(); i += 2){
        odds.insert(str[i]);
    }
    int turn = 0;
    string res;
    while(!evens.empty() && !odds.empty()){
        if(turn % 2 == 0){
            res.push_back(processChar(*evens.begin()));
            evens.erase(evens.begin());
        }
        else{
            res.push_back(processChar(*odds.begin()));
            odds.erase(odds.begin()); 
        }
        ++turn;
    }
    if(!evens.empty()){
        res.push_back(processChar(*evens.begin()));
        evens.erase(evens.begin());
    }
    if(!odds.empty()){
        res.push_back(processChar(*odds.begin()));
        odds.erase(odds.begin());        
    }
    cout << res << endl;
    return 0;
}
全部评论

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
05-11 20:45
门头沟学院 Java
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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