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

字符串合并处理

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

#include <algorithm>
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;

int main() {
   string s,s2;
   cin >> s >> s2;
   s += s2;
   vector<char> odd;
   vector<char> even;
   for(int i = 0; i<s.size(); i++){
        if(i%2 == 0){
            even.push_back(s[i]);
        }else{
            odd.push_back(s[i]);
        }
   }
   sort(even.begin(),even.end());
   sort(odd.begin(),odd.end());
   int idx1 = 0, idx2 = 0;
   for(int i = 0; i<s.size(); i++){
       if(i % 2 == 0){
         s[i] = even[idx1++];
       }else{
         s[i] = odd[idx2++];
       }

    bool flag = true;
       if(s[i] >= 'a' && s[i] <= 'f'){
            s[i] -= 'a'-10; 
       }else if(s[i] >= '0' && s[i] <='9'){
        s[i] -= '0';
       }else if(s[i] >= 'A' && s[i] <= 'F'){
        s[i] -= 'A'-10;
       }else{
        flag = false;
       }
        int num = s[i];

    if(flag){
        int res = 0;
        for(int i = 0; i<4; i++){
            res = res * 2 + num % 2;
            num = num/2;
        }
        if(res >= 10){
            s[i] = 'A' + res - 10;
        }else{
            s[i] = res + '0';
        }
    }
   }
    cout << s;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 评论 收藏
分享
菜菜狗🐶:双非之光
找工作,你会甘心进小厂还...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
12-16 15:57
小鹏汽车 java后端 22*15(固定13,2个月年终) 硕士211
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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