1029. 旧键盘

Posted Just_for_Myself

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1029. 旧键盘相关的知识,希望对你有一定的参考价值。

题目截图:

 

思路:

  字符串匹配。先找出所有未输出字符,然后按序输出。设置一个数组标记字符是否已输出,若已输出则不再输出。注意要将小写字符转成大写字符。

 

代码:

 1 /*
 2     1029. 旧键盘
 3 */
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <math.h>
 8 #include <stdlib.h>
 9 #include <time.h>
10 
11 #define maxn 82
12 // str1为应输入的文字,str2为实际输入的文字,str3为未输出的字符 
13 char str1[maxn], str2[maxn], str3[maxn]; 
14 int asc[256] = {0};            // 标记字符是否已输出 
15 
16 int main() {
17     int i=0, j=0, cnt=0;
18     scanf("%s %s", str1, str2);
19     // 找未输出字符 
20     while(i<strlen(str2) && j<strlen(str1)) {
21         if(str2[i] != str1[j]) {        // 字符未输出 
22             char temp = str1[j];
23             if(temp>=\'a\'&&temp<=\'z\') {    // 小写字母转大写 
24                 temp -= 32;
25             }
26             str3[cnt++] = temp;            // 将未输出字符即坏键存储 
27             j++;
28         } else {
29             i++;j++;
30         }
31     }
32     if(j<strlen(str1)) {                // str1 后面的字符均为坏键 
33         for(;j<strlen(str1); ++j) {
34             char temp = str1[j];
35             if(temp>=\'a\'&&temp<=\'z\') {
36                 temp -= 32;
37             }
38             str3[cnt++] = temp;
39         }
40     }
41     for(i=0; i<cnt; ++i) {                // 按发现顺序,输出坏键 
42         if(!asc[str3[i]-\'\\0\']) {
43             printf("%c", str3[i]);
44             asc[str3[i]-\'\\0\'] = 1;
45         }
46     }
47     
48 
49     return 0;
50 }

 

以上是关于1029. 旧键盘的主要内容,如果未能解决你的问题,请参考以下文章

1029 旧键盘(20)

1029 旧键盘

1029 旧键盘 (20 分)

1029. 旧键盘(20)

PTA乙级 (1029 旧键盘 (20分))

1029 旧键盘 (20 分)