PAT 乙級 1033. 舊鍵盤打字(20)

1033. 舊鍵盤打字(20)

時間限制
200 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字符就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?

輸入格式:

輸入在2行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文字母的壞鍵以大寫給出;每段文字是不超過105個字符的串。可用的字符包括字母[a-z, A-Z]、數字0-9、以及下劃線“_”(代表空格)、“,”、“.”、“-”、“+”(代表上檔鍵)。題目保證第2行輸入的文字串非空。

注意:如果上檔鍵壞掉了,那麼大寫的英文字母無法被打出。

輸出格式:

在一行中輸出能夠被打出的結果文字。如果沒有一個字符能被打出,則輸出空行。

輸入樣例:
7+IE.
7_This_is_a_test.
輸出樣例:
_hs_s_a_tst


思路:

把第二行的字符分爲非字母和字母,把字母分爲大寫和小寫字母,分別討論


歡迎交流:

#include<iostream>
#include<string>

using namespace std;

int main()
{

	string c,a;

	//cin >> c >> a;
	getline(cin, c);//爲了防止第一行是空的,不能用cin >> a,用getline(cin, a)
	getline(cin, a);
	if (a.length() == 0)
	{
		cout << c << endl;
		return 0;
	}

	for (int i = 0; i < a.length(); i++)
	{
		if (isalpha(a[i]))//字母
		{
			if (65 <= a[i] && a[i] <= 90)//大寫字母,或者這樣判斷if('A'<=a[i]&&a[i]<='Z')
			{
				if (c.find(a[i], 0) == -1 && c.find('+', 0) == -1)
				{
					printf("%c", a[i]);
				}
			}
			else//小寫字母
			{
				
				if (c.find(toupper(a[i]), 0)==-1)
				{
					printf("%c", a[i]);
				}
			}

		}
		else//非字母
		{
			if (c.find(a[i], 0) == -1)printf("%c",a[i]);
		}
	}
	printf("\n");
	return 0;
}



發佈了111 篇原創文章 · 獲贊 44 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章