1. 程式人生 > >PAT-ADVANCED1050——String Subtraction

PAT-ADVANCED1050——String Subtraction

題目描述:

題目翻譯:

1050 字串相減

給出兩個字串S1和S2,S = S1 - S2倍定義成除去S2中所有字元的S1的剩餘字串。你的任務是對任意給定的兩個字串,計算出S1 - S2的值。但是,快速完成它可能並不那麼簡單。

輸入格式:

每個輸入檔案包含一個測試用例。每個測試用例有兩行,分別表示S1和S2。每個字串的長度不超過10 ^ 4。題目保證所有字元都是可見的ASCII碼和空格,並且新的行字元表示字串的結尾。

輸出格式:

對每個測試用例,在一行中輸出S1 - S2的結果。

輸入樣例:

They are students.
aeiou

輸出樣例:

Thy r stdnts.

知識點:字串、雜湊表

思路:用一個大小為256的陣列記錄字串S2中出現過的字元

遍歷S1中字元時,如果該字元在S2中出現過,則不輸出。

時間複雜度是O(len1 + len2),其中len1是字串S1的長度,len2是字串S2的長度。空間複雜度是O(256)。

C++程式碼:

#include<iostream>
#include<string>

using namespace std;

int main(){
	bool flag[256];
	fill(flag, flag + 256, true);
	string input1;
	string input2;
	getline(cin, input1);
	getline(cin, input2);
	for(int i = 0; i < input2.length(); i++){
		flag[input2[i]] = false;
	}
	for(int i = 0; i < input1.length(); i++){
		if(flag[input1[i]]){
			printf("%c", input1[i]);
		}
	}
	return 0;
}

C++解題報告: