【PAT乙級】字元串A+B
- 2019 年 11 月 8 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/weixin_42449444/article/details/85016265
題目描述:
給定兩個字元串 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
解題思路:
這個題真的不難,可是這一次PAT乙級考試,我的的確確就輸在了這題上面,在考試的時候由於我時間分配的不合理,我這題沒提交過一次程式碼,20分直接沒了。5道題里我就空了這一道水題沒提交過、沒有得分。停止提交之後的5分鐘,我寫出了程式碼。這題不就是用map來記錄輸出過的字元,不重複地輸出字元就AC了嗎?可以說是非常遺憾了。
AC程式碼:
#include <bits/stdc++.h> using namespace std; int main() { string a,b; getline(cin,a); getline(cin,b); string result = a+b; map<char,int> m; //map的key值是字元,value值用0和1來記錄是否輸出過 for(auto it: result) //for-each循環遍歷字元串A+B { if(m[it]==0) //若該字元沒有出現過 { cout << it; //輸出該字元 m[it] = 1; //並在map中記錄它輸出過了 } } return 0; }