PAT (Basic Level) Practise (中文)1029. 舊鍵盤(20)

  1. 舊鍵盤(20)

時間限制
200 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字符就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。

輸入格式:

輸入在2行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過80個字符的串,由字母A-Z(包括大、小寫)、數字0-9、以及下劃線“_”(代表空格)組成。題目保證2個字符串均非空。

輸出格式:

按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有1個壞鍵。

輸入樣例:
7_This_is_a_test
_hs_s_a_es
輸出樣例:
7TI

思路:逐個遍歷比較字符串,記錄下不同的字符,每次存儲丟失的字符時,先檢查是否已經存儲

#include <stdio.h>
#include <string.h>

int main()
{
    char input[100] ={0}; //存放應該輸入的字符串
    char output[100] ={0};//存放實際輸入的字符串
    char lose[100] = {0}; //存放失效的鍵
    int i = 0, j = 0, k = 0, n = 0;
    int flag = 0; //設置標誌位,用於判斷是否是新出現的鍵
    scanf("%s%s", input, output);

    for(i = 0; i < strlen(input); i++)
    {
        if(input[i] == output[j] && j < strlen(output))
        {
            j++;
        }
        else
        {
            flag = 0;
            if(input[i] >= 'a' && input[i] <='z')
            {
                input[i] = input[i] - 32;//換爲大寫字母
            }

            for(k = 0; k < n; k++)
            {
                if(input[i] == lose[k])
                    flag = 1;
            }
            if(flag == 0)
                lose[n++] = input[i];
        }
    }

    for(i = 0; i < n; i++)
        printf("%c", lose[i]);
    printf("\n");
    return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章