uva 156 Ananagrams STL

以你之姓@ 2022-06-08 00:29 218阅读 0赞

Center

Center 1

题目大意:

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

题目解析:

这是一个非常简单的STl,直接用vector储存,用map映射一下就可以了

代码:

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

发表评论

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

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

相关阅读

    相关 uva156(标准化+map)反片语

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

    相关 uva 156 Ananagrams STL

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

    相关 反片语(UVA156)

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