UVa156 Ananagrams (STL)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa156 Ananagrams (STL)相关的知识,希望对你有一定的参考价值。

链接:http://acm.hust.edu.cn/vjudge/problem/19294
分析:map容器的应用。map容器按key值从小到大排序,所以自定义类型作为key时要定义“小于”运算符,还有map重载“[]”运算符,可以像数组一样使用。将每个单词“标准化”(将字母转换成小写并按字典序从小到大),cnt记录每个“标准化”后单词的个数,words保存出现过的所有单词,最后遍历words数组,将“标准化”后只出现一次的单词保存最后按字典序排序后输出。

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <map>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 vector<string> words;
 9 map<string, int> cnt;
10 
11 string repr(const string& s) {
12     string ans = s;
13     for (int i = 0; i < s.length(); i++)
14         ans[i] = tolower(ans[i]);
15     sort(ans.begin(), ans.end());
16     return ans;
17 }
18 
19 int main() {
20     string s;
21     while (cin >> s) {
22         if (s[0] == #) break;
23         words.push_back(s);
24         string r = repr(s);
25         if (!cnt.count(r)) cnt[r] = 0;
26         cnt[r]++;
27     }
28     vector<string> ans;
29     for (int i = 0; i < words.size(); i++)
30         if (cnt[repr(words[i])] == 1) ans.push_back(words[i]);
31     sort(ans.begin(), ans.end());
32     for (int i = 0; i < ans.size(); i++)
33         cout << ans[i] << endl;
34     return 0;
35 }

 

 

以上是关于UVa156 Ananagrams (STL)的主要内容,如果未能解决你的问题,请参考以下文章

UVa156 Ananagrams (STL)

uva 156 - Ananagrams (反片语)

UVA 156 Ananagrams

反片语 (Ananagrams,UVa 156)

UVa-156 Ananagrams(map映射)

Ananagrams (多种stl)