zoukankan      html  css  js  c++  java
  • uvaoj 156Ananagrams(map和vector组合使用)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=92

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

    并将这些输出的单词按字典序顺序排列

    map的count方法,如果map里面有这个元素就返回1,否则返回0.

    vector的push_back()在尾部添加元素   

    这题还可以学习的是对每个单词进行标准化的技巧:变成小写的字典序排列,那么如果有能通过字母重排得到的单词,他们就是一样的。在这道题里非常容易判断。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 map<string,int>cnt;
     4 vector<string>words;
     5 //将单词标准化(变成小写的字典序)
     6 string repr(const string& s)
     7 {
     8     string ans=s;
     9     for(int i=0; i<ans.length(); i++)
    10     {
    11         ans[i]=tolower(ans[i]);
    12     }
    13     sort(ans.begin(),ans.end());//string类型可以用begin和end
    14     return ans;
    15 }
    16 int main()
    17 {
    18     string s;
    19     while(cin>>s)
    20     {
    21         if(s[0]=='#')break;
    22         words.push_back(s);
    23         string r=repr(s);
    24         if(!cnt.count(r))cnt[r]=0;//如果之前容器里面没有,就设为空 
    25         cnt[r]++;//记录这个单词出现的次数 
    26     }
    27     vector<string>ans;
    28     for(int i=0;i<words.size();i++)
    29     {
    30         if(cnt[repr(words[i])]==1)ans.push_back(words[i]);
    31         
    32     }
    33     sort(ans.begin(),ans.end());
    34     for(int i=0;i<ans.size();i++)
    35     {
    36         cout<<ans[i]<<endl;
    37     }
    38     
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    K8s(2)-部署应用
    Docker-常用命令(7)
    Docker-堆栈stack(6)
    Docker-集群swarm(5)
    Docker-服务(4)
    Docker的概念术语(2)
    k8s(1)-使用kubeadm安装Kubernetes
    Celery-分布式任务队列
    使用Python管理压缩包
    jQuery基础
  • 原文地址:https://www.cnblogs.com/fqfzs/p/9966065.html
Copyright © 2011-2022 走看看