PAT 1093 字串A+B (20 point(s)) – 乙級
給定兩個字串 A 和 B,本題要求你輸出 A+B,即兩個字串的並集。要求先輸出 A,再輸出 B,但重複的字元必須被剔除。
輸入格式:
輸入在兩行中分別給出 A 和 B,均為長度不超過 106 的、由可見 ASCII 字元 (即碼32~126)和空格組成的、由回車標識結束的非空字串。
輸出格式:
在一行中輸出題面要求的 A 和 B 的和。
輸入樣例:
This is a sample test
to show you_How it works
輸出樣例:
This ampletowyu_Hrk
題目大意:求出兩個字串的並集,按照原有順序輸出。意思是按順序輸出,第一次出現的所有字元。
分析:用陣列hash標記一下是否是第一次輸出即可(字元本身是一個ASCII碼值,可當作整數用)
#include <iostream> using namespace std; int main() { string s1, s2, s; int hash[200] = {0}; getline(cin, s1); getline(cin, s2); s = s1 + s2; for (int i = 0; i < s.size(); i++) { if (hash[s[i]] == 0) cout << s[i]; hash[s[i]] = 1; } return 0; }ofollow,noindex" target="_blank">❤❤點選這裡 -> 訂閱PAT、藍橋杯、GPLT天梯賽、LeetCode題解離線版❤❤
