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

字符串合并处理

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

#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    string s1, s2; //0110
    string str1 = "0123456789abcedfABCEDF";
    string str2 = "084C2A6E195D37BF5D37BF";
    while (cin >> s1 >> s2) {
        vector<char> v1(s1.size()), v2(s2.size());
        string strOout = s1 + s2;
        string odd, even;
        for (int i = 0; i < strOout.size(); i++) {
            if (i % 2 == 0) {
                even += strOout[i];
            } else {
                odd += strOout[i];
            }
        }
        sort(odd.begin(), odd.end());
        sort(even.begin(), even.end());
        //cout <<odd << ":" <<even<<endl;
        for (int i = 0, j = 0, l = 0; i < strOout.size(); i++) {
            if (i % 2 == 0) {
                strOout[i] = even[j++];
            } else {
                strOout[i] = odd[l++];
            }
            if ((strOout[i] >= '0' && strOout[i] <= '9') || (toupper(strOout[i]) >= 'A' &&
                    toupper(strOout[i]) <= 'F')) {
                strOout[i] = str2[str1.find_last_of(strOout[i])];
            }
        }

        cout << strOout << endl;

    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务