PAT-B 1029 舊鍵盤【字串】

Enjoy_process發表於2019-02-22

                                               PAT-B 1029 舊鍵盤

                  https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488

 

 

題目

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。

輸入

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

輸出

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

樣例輸入

7_This_is_a_test
_hs_s_a_es

樣例輸出

7TI

分析

先將兩個字串的小寫字母換成大寫,然後統計各個字元出現的次數,如果兩個字串的字元ch的數量不同,則ch對應的鍵壞掉了。

C++程式

#include<iostream>
#include<cstring>

using namespace std;

int a[200],b[200];
char s1[85],s2[85];
bool flag[200];//flag[i]記錄字元i是否輸出過 

int main()
{
	scanf("%s %s",s1,s2);
	for(int i=0;i<strlen(s1);i++)
	{
		s1[i]=toupper(s1[i]);
		a[s1[i]]++;
	}
	for(int i=0;i<strlen(s2);i++)
	{
		s2[i]=toupper(s2[i]);
		b[s2[i]]++;
	}
	for(int i=0;i<strlen(s1);i++)
	  if(a[s1[i]]!=b[s1[i]]&&!flag[s1[i]])
	  {
	  	 putchar(s1[i]);	
	  	 flag[s1[i]]=true;//標記字元s1[i]已經輸出 
	  } 
	putchar('\n');
	return 0;
} 

 

相關文章