ZeroJudge E507: Common Permutation

題目敘述

本題採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";
    }
}

留言