题目描述:spa
旧键盘上坏了几个键,因而在敲一段文字的时候,对应的字符就不会出现。如今给出应该输入的一段文字、以及实际被输入的文字,请你列出确定坏掉的那些键。 输入格式: 输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-九、以及下划线 _(表明空格)组成。题目保证 2 个字符串均非空。 输出格式: 按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每一个坏键只输出一次。题目保证至少有 1 个坏键。 输入样例: 7_This_is_a_test _hs_s_a_es 输出样例: 7TI
本人AC代码:blog
// PAT_1029_Broken_Key # include <stdio.h> # include <string.h> int main(void) { char S1[100]; // 记录本应该输入的字符 char S2[100]; // 记录实际输出的字符 char Break_Key[85]; // 记录坏掉的键 int i=0, j=0, k=0; int len1, len2; int flag = 1; int n = 0; // 记录坏掉的键个数 // 输入字符串 gets(S1); gets(S2); len1 = strlen(S1); len2 = strlen(S2); for(i=0;i<strlen(S1);i++) { if(S1[i]>='a'&&S1[i]<='z') S1[i]=S1[i]-32; } for(i=0;i<strlen(S2);i++) { if(S2[i]>='a'&&S2[i]<='z') S2[i]=S2[i]-32; } i=j=0; // 开始比对字符串 while (i<len1 || j<len2) { // 若是对应位置不相同,则说明该键是坏键 // 有坏键则S2下标不动 if (S1[i] != S2[j]) { // 判断是否在已经坏掉的字符串中出现过 k=0; flag = 1; while (Break_Key[k] != '\0') { // 若是S1[i] 在Break_Key 字符串中出现过,则再也不继续,设置标志符号flag=0; if (S1[i] == Break_Key[k]) { flag = 0; break; } k++; } // 写入的时候,字母大写 if (flag == 1) { Break_Key[n] = S1[i]; n++; } i++; } // 不然,说明该键没问题 else { i++; j++; } } for (i=0; i<n; i++) { printf("%c",Break_Key[i]); } printf("\n"); return 0; }
RRR字符串