题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include <stdio.h> #include "stdlib.h" #include "string.h" int compre(const void* p1, const void* p2) { return *(char*)p1 - *(char*)p2; } int main() { //借鉴大佬的一个翻转解法 char input[] = {"0123456789abcdefABCDEF"}; char output[] = {"084C2A6E195D3B7F5D3B7F"}; char str1[101] ={'\0'}; char str2[101] ={'\0'}; char str[201]; int len_sort1 =0, len_sort2 = 0; while (scanf("%s", str) != EOF) { scanf("%s", str1); strcat(str, str1); } int len = strlen(str); int j; for (int i = 0; i < len; i++) { if (i % 2 == 0) { str1[i / 2] = str[i]; len_sort1++; } else { str2[i / 2] = str[i]; len_sort2++; } } qsort(str1, len_sort1, sizeof(char), compre); qsort(str2, len_sort2, sizeof(char), compre); for (int i = 0; i < len; i++) { if (i % 2 == 0) str[i] = str1[i / 2] ; else str[i] = str2[i / 2]; } for (int i = 0; i < len; i++) { for ( j = 0; j < 22 ; j++) { if (input[j] == str[i]) { str[i] = output[j]; break; } } } printf("%s", str); }