PAT_B_1033 舊鍵盤打字

題目描述

舊鍵盤上壞了幾個鍵,因而在敲一段文字的時候,對應的字符就不會出現。如今給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?
輸入格式:
輸入在 2 行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文字母的壞鍵以大寫給出;每段文字是不超過 10^​5個字符的串。
可用的字符包括字母 [a-z, A-Z]、數字 0-九、以及下劃線 _(表明空格)、,、.、-、+(表明上檔鍵)。題目保證第 2 行輸入的文字串非空。
注意:若是上檔鍵壞掉了,那麼大寫的英文字母沒法被打出。
輸出格式:
在一行中輸出可以被打出的結果文字。若是沒有一個字符能被打出,則輸出空行。
輸入樣例:
7+IE.
7_This_is_a_test.
輸出樣例:
_hs_s_a_tst

AC代碼

// PAT_1033_Type

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

int main(void)
{
    char Break[50];
    char S_Arr[100010];
    char Err[] = "";
    int len;
    int i, j=0;
    int flag_UP = 0; // 若是flag_UP爲0,表示沒壞,則大寫字母正常輸出
    int flag = 1; // 標誌每一位是否輸出
    int flag_All = 0;

    gets(Break); // 輸入鍵盤的壞鍵
    gets(S_Arr); // 輸入文本段
    
    if (Break == "")
	{
		puts(S_Arr);
		return 0;
	}

    len = strlen(S_Arr);

    // 清除沒法顯示的字符
    // 先遍歷一遍Break,看是否有上檔鍵失靈,若是有定義flag_UP=1不輸出大寫字母
    while (Break[j] != '\0')
    {
        if (Break[j]=='+')
        {
            flag_UP = 1;
        }
        j++;
    }
    for (i=0; i<len; i++)
    {
        j = 0;
        flag = 1;
        // 挨個遍歷S_Arr,若是flag爲0 則不輸出
        // 首先判斷是不是字母,若是不是字母,則不用判斷大小寫
        // 開始判斷字母是否符合
        // 小寫字母
        if (S_Arr[i]>='a'&&S_Arr[i]<='z')
        {
            while (Break[j] != '\0')
            {
                if ((S_Arr[i]-'a' == Break[j]-'A'))
                {
                    flag = 0;
                    break;
                }
                j++;
            }
        }
        else if (S_Arr[i]>='A'&&S_Arr[i]<='Z')
        {
            if (flag_UP == 1)
            {
                // 上檔鍵壞了則,大寫字母不輸出
                flag = 0;
            }
            else
            {
                while (Break[j] != '\0')
                {
                    if (S_Arr[i] == Break[j])
                    {
                        flag = 0;
                        break;
                    }
                    j++;
                }
            }
        }
        else
        {
        	while (Break[j] != '\0')
            {
                if (S_Arr[i] == Break[j])
                {
                    flag = 0;
                    break;
                }
                j++;
            }
		}
        
        if (flag == 1)
        {
            flag_All = 1;
            printf("%c",S_Arr[i]);
        }
    }
    if (flag_All == 0)
    {
    	 printf("");
	}

    return 0;
}

RRRspa

相關文章
相關標籤/搜索