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

字符串合并处理

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

#include<bits/stdc++.h>

using namespace std;


int main(){
    
    string str1,str2;
    while(cin>>str1>>str2){
        string new_str = str1+str2;
        
        if(new_str.size()>2){
            //希尔排序
            for(int i=2;i<new_str.size();++i){
                if(new_str[i]<new_str[i-2]){
                    char ch = new_str[i];
                    int j=i-2;
                    for(j;new_str[j]>ch&&j>=0;j-=2){
                        new_str[j+2] = new_str[j];
                    }
                    new_str[j+2] = ch;
                }
            }
        }
        
        for(int i=0;i<new_str.size();++i){
            int num=-1;
            if(new_str[i]>='0'&&new_str[i]<='9'){
                num = new_str[i]-'0';
            }else if(new_str[i]>='A'&&new_str[i]<='F'){
                num = new_str[i]-'A'+10;
            }else if(new_str[i]>='a'&&new_str[i]<='f'){
                num = new_str[i]-'a'+10;
            }
            if(num>-1){
                bitset<4> b1(num);
                string tmp = b1.to_string();
                reverse(tmp.begin(), tmp.end());
                bitset<4> b2(tmp);
                int res_num = b2.to_ulong();
                if(res_num>=0&&res_num<=9)
                    new_str[i]='0'+res_num;
                else if(res_num>9&&res_num<16)
                    new_str[i]='A'+res_num-10;
            }
        }
        cout<<new_str<<endl;
    }

    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 16:31
点赞 评论 收藏
分享
董春花_:真诚无罪,别听评论区那个清华的。按他的逻辑,你有分寸人觉得你是不想来,你积极热情人觉得你太想来,你好骗人就可你养鱼,你不好骗人觉得你服从性不高,合着**做啥都白扯。保持谦逊礼貌与对offer的积极性不才是最正常,也正确的做法么?招聘方的错强加到应聘者身上,***何不食肉糜。
点赞 评论 收藏
分享
龙珠传说:nb,公务员解约不需要支付违约金吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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