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 }

 

posted @ 2018-03-01 10:09  Just_for_Myself  阅读(281)  评论(0编辑  收藏  举报