字典合並。輸入用字符串表示兩個字典,輸出合並后的字典,字典的鍵用一個字母或數字表示。注意:1和‘1’是不同的關鍵字!
輸入格式:
在第一行中輸入第一個字典字符串 在第二行中輸入第二個字典字符串
輸出格式:
在一行中輸出合並的字典,輸出按字典序。"1"的ASCII嗎為49,大於1,排序時1在前,"1"在后,其它的也一樣。
輸入樣例1:
在這里給出一組輸入。例如:
{1:3,2:5} {1:5,3:7}
輸出樣例1:
在這里給出相應的輸出。例如:
{1:8,2:5,3:7}
輸入樣例2:
在這里給出一組輸入。例如:
{"1":3,1:4} {"a":5,"1":6}
輸出樣例2:
在這里給出相應的輸出。例如:
{1:4,"1":9,"a":5}
思路:不用map處理,用string處理。
①判斷輸入類型,key值由兩種情況,一種int類型(不帶引號),一種char類型(帶引號),分別存進a,b兩數組。
②輸出時,注意引號的輸出
1 #include<iostream> 2 #include<string> 3 #include<cctype> 4 using namespace std; 5 int main() 6 { 7 int a[5] = {0}, sum = 0; 8 int b[201] = {0}; 9 string s1, s2; 10 cin >> s1 >> s2; 11 for (int i = 0; i < s1.length(); i++) 12 { 13 if (isalnum(s1[i]) && s1[i - 1] == '\"'&&s1[i + 1] == '\"') 14 b[s1[i]] = s1[i + 3] - '0'; 15 if (s1[i] - '0' >= 0 && s1[i] - '0' <= 9 && s1[i + 1] == ':') 16 a[s1[i] - '0'] = s1[i + 2] - '0'; 17 } 18 for (int i = 0; i < s2.length(); i++) 19 { 20 if (isalnum(s2[i]) && s2[i - 1] == '\"'&&s2[i + 1] == '\"') 21 b[s2[i]] += s2[i + 3] - '0'; 22 if (s2[i] - '0' >= 0 && s2[i] - '0' <= 9 && s2[i + 1] == ':') 23 a[s2[i] - '0'] += s2[i + 2] - '0'; 24 } 25 for (int i = 0; i < 5; i++) 26 if (a[i] != 0) 27 sum++; 28 for (int i = 0; i < 201; i++) 29 if (b[i] != 0) 30 sum++; 31 printf("{"); 32 for (int i = 0; i < 5; i++) 33 { 34 if (a[i]!=0) 35 { 36 if (sum!=1) 37 { 38 printf("%d:%d,", i, a[i]); 39 sum--; 40 } 41 else 42 { 43 printf("%d:%d", i, a[i]); 44 printf("}"); 45 } 46 } 47 } 48 for (int i = 0; i < 201; i++) 49 { 50 if (b[i]!=0) 51 { 52 if (sum!=1) 53 { 54 printf("\"%c\":%d,", char(i),b[i]); 55 sum--; 56 } 57 else 58 { 59 printf("\"%c\":%d", char(i), b[i]); 60 printf("}"); 61 } 62 } 63 64 } 65 }