Luoyoooo

与其感慨路难行,不如马上出发

[字符串处理]7-5 字典合并 (20分)

字典合并。输入用字符串表示两个字典,输出合并后的字典,字典的键用一个字母或数字表示。注意: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 }
posted @ 2020-01-19 22:00  Luoyoooo  阅读(1426)  评论(0编辑  收藏  举报