题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
// HJ31 字符串合并处理.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 #include<iostream> #include<bits/stdc++.h> using namespace std; char a[] = { "0123456789abcdefABCDEF" }; char b[] = { "084C2A6E195D3B7F5D3B7F" }; class Solution { public: string numChange(string& s); }; string Solution::numChange(string& s) { for (int i = 0; i < s.size(); i++) { if (isdigit(s[i])) { s[i] = b[s[i] - '0']; } else if (s[i]>='a'&&s[i]<='f') { s[i] = b[s[i] - 'a' + 10]; } else if (s[i]>='A'&&s[i]<='F') { s[i] = b[s[i] - 'A' + 16]; } } return s; } int main() { Solution a; string s1, s2, str; cin >> s1 >> s2; str += s1; str += s2; string v1; string v2; for (int i = 0; i < str.size(); i++) { if (i % 2 == 0) { v1.push_back(str[i]); } else { v2.push_back(str[i]); } } sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); for (int i = 0,k=0,j=0; i < str.size(); i++) { if (i % 2 == 0) { str[i] = v1[k++]; } else if(i%2==1) { str[i] = v2[j++]; } } //cout << str << endl; cout << a.numChange(str) << endl; return 0; }