uva156(标准化+map)反片语

向右看齐 2024-02-17 23:55 67阅读 0赞

输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。 在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序进行排列(所有大写字母在所有小写字母的前面)。

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

发表评论

表情:
评论列表 (有 0 条评论,67人围观)

还没有评论,来说两句吧...

相关阅读

    相关 uva156标准化+map

    输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。 在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序

    相关 uva 156 Ananagrams STL

    ![Center][] ![Center 1][] 题目大意: 输入一些单词,找出所有满足如下条件的单词,该单词不能通过字母重排,得到输入文本中的另一个单词,在判断

    相关 (UVA156)

    题目解析:是对map,vector的一个很好的练习 首先该单词不能通过字母重新排列 那么先把该单词全部转化为小写 然后排序 用map容器记录每个排序完成的单词出现的次数 然后用