題目敘述
本題採EOF方式收資料,每筆資料有兩行字串A和B,要求輸出A和B重複的字元 (需經過排序),如果有同個字元出現超過一次,出現幾次就輸出幾次這個字元。
範例輸入 #1
pretty
women
walking
down
the
street
範例輸出 #1
e
nw
et
解題思路
使用Map來紀錄A的有哪些字元,再跑B的For迴圈看這個字元有沒有在A有出現過,如果有的話就在答案的Map裡面紀錄,並且將A的Map減1。之後使用Auto跑答案Map的For迴圈輸出字元即可。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <map>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
string a, b;
while (cin >> a >> b)
{
map<char, int>A;
map<char, int>ans;
for (int i = 0; i<a.length(); i++)
{
A[a[i]]++;
}
for (int i = 0; i<b.length(); i++)
{
if (A[b[i]] > 0)
{
ans[b[i]]++;
A[b[i]]--;
}
}
for (auto it:ans)
{
for (int i = 0; i<it.second; i++)
{
cout << it.first;
}
}
cout << "\n";
}
}
留言
張貼留言