首页 > 代码库 > UVa156 Ananagrams (STL)
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。