字符串合并处理
字符串合并处理
http://www.nowcoder.com/questionTerminal/d3d8e23870584782b3dd48f26cb39c8f
#include <iostream> #include <string> #include <algorithm> using namespace std; bool strSort(string& str) { string str1, str2; for(unsigned i = 0; i < str.size(); ++i) { if(i & 0x01) str1 += str[i]; else str2 += str[i]; } sort(str1.begin(), str1.end()); sort(str2.begin(), str2.end()); for(unsigned i = 0; i < str.size(); ++i) { if(i & 0x01) str[i] = str1[i / 2]; else str[i] = str2[i / 2]; } return true; } void reverseC(char &c) { unsigned bit_l = 0x08, bit_r = 0x01; char a = 0x00; while(bit_l) { if(c & bit_l) a |= bit_r; bit_l >>= 1; bit_r <<= 1; } if(a >= 0 && a <= 9) a += '0'; else if(a >= 0x0A && a <= 0x0F) a = a - 0x0A + 'A'; c = a; } int main() { string str, str1, str2; while(cin >> str1 >> str2) { str = str1 + str2; strSort(str); for(unsigned i = 0; i < str.size(); ++i) { if(str[i] >= '0' && str[i] <= '9') { str[i] = str[i] - '0'; reverseC(str[i]); } else if(str[i] >= 'a' && str[i] <= 'f') { str[i] = str[i] - 'a' + 10; reverseC(str[i]); } else if(str[i] >= 'A' && str[i] <= 'F') { str[i] = str[i] - 'A' + 10; reverseC(str[i]); } } cout << str << endl; str.clear(); str1.clear(); str2.clear(); } return 0; }