題目描述: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字符串