• UVA Ananagrams /// map set


    https://vjudge.net/problem/UVA-156

    题目大意:

    输入文本,找出所有满足条件的单词——该单词不能通过字母重排而得到输入的文本中的另外一个单词。

    在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序进行排序。

    Sample Input

    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 #

    Sample Output

    Disk

    NotE

    derail

    drIed

    eye

    ladder

    soon

    将所有单词转为小写再sort后存入map中,若已出现过则继续加1,若未出现过则先赋零再加1

    将所有单词原文本存入set中,会直接按字典序排序,最后遍历set 判断 输出

    #include <bits/stdc++.h>
    using namespace std;
    map <string,int> mp;
    set <string> had;
    string judge(string str)
    {
        string s=str;
        for(int i=0;i<s.length();i++)
            s[i]=tolower(s[i]);    ///将单词转为小写再排序
        sort(s.begin(),s.end());  
        return s;
    }
    int main()
    {
        string str;
        while(cin>>str)
        {
            had.insert(str);    ///将原文本单词存入set
            if(str[0]=='#') break;
            string temp=judge(str);  
            if(mp.count(temp)==0) mp[temp]=0; 
            mp[temp]++;  ///转换后的单词是否出现过 无则赋零+1有则+1
        }
        set <string>::iterator iter;
        for(iter=had.begin();iter!=had.end();iter++)
            if(mp[judge(*iter)]==1) cout<<*iter<<endl; 
                             ///为1表示没有重复只出现过一次 
        return 0;
    }
    View Code
  • 相关阅读:
    DOM总结
    BOM总结
    备忘录设计模式
    策略模式
    迭代器模式
    观察者模式
    装饰模式
    脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
    ajax传输中文乱码解决方法
    java Serialization and Deserializaton
  • 原文地址:https://www.cnblogs.com/zquzjx/p/8405903.html
Copyright © 2020-2023  润新知