zoukankan      html  css  js  c++  java
  • 反片语(Ananagrams,Uva 156)

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

      样例输入:

    ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Rides dealer NotE derail LaCeS drIed noel dire Disk mace Rob dries #

      样例输出:

    Disk

    NotE

    derail

    drIed

    eye

    ladder

    soon

    【分析】 把每个单词“标准化”,即全部转化为小写字母后再进行排序,然后再放到map中进行统 计。代码如下: 

    #include<iostream>
    #include<string>
    #include<cctype>
    #include<vector>
    #include<map>
    #include<algorithm>
    using namespace std;
    
    map<string ,int> cnt;
    vector<string> words;
    
    string repr(const string &s){//标准化
         string ans =s;
         for(int i=0;i<ans.length();i++){
             ans[i]=tolower(ans[i]);
         }
         sort(ans.begin(),ans.end());
         return ans;
     }
    int main(){
        int n=0;
        string s;
        while(cin>>s){
            if(s[0]=='#') break;
            words.push_back(s);
            string r = repr(s);
            if(!cnt.count(r)) cnt[r]=0;
            cnt[r]++;
        }
        vector<string> ans;
        for(int i=0;i<words.size();i++){
            if(cnt[repr(words[i])]==1) ans.push_back(words[i]);
        }
        sort(ans.begin(),ans.end());
        for(int i=0;i<ans.size();i++){
            cout<<ans[i]<<"
    ";
        }
        return 0;
    }

      此例说明,如果没有良好的代码设计,是无法发挥STL的威力的。如果没有想到“标准 化”这个思路,就很难用map简化代码。

       map就是从键(key)到值(value)的映射。因为重载了[ ]运算符,map像是数组的“高 级版”。例如可以用一个map<string,int>month_name来表示“月份名字到月份编号”的映射, 然后用month_name["July"]=7这样的方式来赋值。

      set头文件中的set和map头文件中的map分别是集合与映射。二者都支持 insert、find、count和remove操作,并且可以按照从小到大的顺序循环遍历其中的元素。 map还提供了“[]”运算符,使得map可以像数组一样使用。事实上,map也称为“关联数 组”。

      注:

      使用count,返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。

      使用find,返回的是被查找元素的位置,没有则返回map.end()。

  • 相关阅读:
    TCO 2013 2A
    matlab 中的fmincon参数设定问题
    一步步写自己SqlHelper类库(四):Connection对象
    珠海立方科技实习总结
    Web Services 应用开发学习笔记(三):XML模式定义
    C#笔记(一):类型,泛型,集合
    Web Services 应用开发学习笔记(二):XML文档类型定义
    一步步写自己SqlHelper类库(三):连接字符串
    一步步写自己SqlHelper类库(二):.NET Framework 数据提供程序
    (Joomla)多功能健康模块
  • 原文地址:https://www.cnblogs.com/LOW-ctfer/p/10440219.html
Copyright © 2011-2022 走看看