Uva 156 Ananagrams(字符串)

题目链接:https://vjudge.net/problem/UVA-156

题意

所有单词可以重排其中的字母,找出一串文本中不能重排为其他单词的单词。

思路

将所有单词标准化并记录出现次数,输出只出现一次的原单词。

代码

#include <bits/stdc++.h>
using namespace std;

map<string, int> mp;
vector<string> v, ans;

string normal(string s) {
    for (char &c : s) c = tolower(c);
    sort(s.begin(), s.end());
    return s;
}

int main() {
    string s;
    while (cin >> s and s != "#") {
        v.push_back(s);
        ++mp[normal(s)];
    }
    for (auto i : v) 
        if (mp[normal(i)] == 1) ans.push_back(i);
    sort(ans.begin(), ans.end());
    for (auto i : ans) cout << i << "\n";
}

 

posted @ 2020-04-23 21:50  Kanoon  阅读(109)  评论(0)    收藏  举报