反片语(map)

输入一些单词,找出所有满足如下条件的单词:

该单词不能通过字母重排,得到输入文本中的另外一个单词。

在判断是否满足条件时,不区分大小写,但输出保留输入中的大小写,按字典序进行排列(所有大写字母在小写字母的前面)

样例输入:

ladder came tape soon leader acme RIDE lone Dreis peat

ScALE orb eye Rides dealer NotE derail LaCeS drIed

noel dire Disk mace Rob dires

#

样例输出:

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)             //将单词s进行标准化
{
    string ans=s;
    for(int i=0;i<ans.length();i++)
        ans[i]=tolower(ans[i]);
    sort(ans.begin(),ans.end());           //sort可以对任意对象进行排序
    return ans;
}
int main()
{
    int n=0;
    string s;
    while(cin>>s){
        if(s[0]==‘#‘)break;
        words.push_back(s);              //在vector words尾部加入一个数据s
        string r=repr(s);             //r为标准化后的字符串
        if(!cnt.count(r))cnt[r]=0;        //count(n) 返回容器中n出现的次数   若不为0,则使该r对应的int 为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]<<endl;
    //system("pause");
    return 0;
}
时间: 2024-12-06 09:09:46

反片语(map)的相关文章

uva 156 - Ananagrams (反片语)

csdn:https://blog.csdn.net/su_cicada/article/details/86710107 例题5-4 反片语(Ananagrams,Uva 156) 输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文 本中的另外一个单词. 在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中 的大小写,按字典序进行排列(所有大写字母在所有小写字母的前面). Sample Input ladder came tape soon leader ac

STL语法——映射:map 反片语(Ananagrams,UVa 156)

Description Most crossword puzzle fans are used to anagrams--groups of words with the same letters in different orders--for example OPTS, SPOT, STOP, POTS and POST. Some words however do not have this attribute, no matter how you rearrange their lett

Ananagrams(反片语)【map的应用】P114

中文题意:输入一些单词,找出满足如下条件的单词:该单词不能通过字母重排,得到文本中的另一个单词.在判断是否满足条件时,字母不分大小写,但在输出是应保留输入中的大小写,按字典序进行排序(所有大写字母在所有小写字母的前面).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 # #i

uva156反片语

背景:学习stl过程中遇到的简单题,但我不会. 思路:将单词标准化,然后就可以运用映射map了. #include <iostream> #include <string> #include <cctype> #include <vector> #include <map> #include <algorithm> using namespace std; map<string,int> cnt; vector<st

c++ STL 映射:map

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的. 功能:建立key-value的映射  key与value是任何你需要的类型  exp:map<char,int>

ceph之crush map

编辑crush map: 1.获取crush map: 2.反编译crush map: 3.至少编辑一个设备,桶, 规则: 4.重新编译crush map: 5.重新注入crush map: 获取crush  map 要获取集群的crush map,执行命令: ceph osd  getcrushmap -o {compiled-crushmap-filename} ceph将crush输出(-o)到你指定的文件,由于crush map是已编译的,所以需要反编译: 反编译crush map 要反

23.each和map函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script src="jquery-3.3.1.min.js"></script> <script> $(function () { //each方法跟for循环实现的效果是一样的

算法入门经典 第五章

例题5-4 反片语 输入一些单词(以"#"为结束标志),找出所有满足如下条件的单词:该单词不能通过字母的重排,得到输入文本中的另一个单词.在判断是否满足条件是不分大小写,但是在输出时应保留输入时的大小写,按字典序进行排列(所有大写字母在所有小写字母前面). Sample input ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Rides dealer NotE derail LaCeS drI

struts2学习整理

1.struts.xml文件中的<constantname="struts.devMode">中的value改为true,那么以后修改了struts.xml文件的话,它会自动地更新加载,不需要每次修改完都去重启服务器. 2.strurs2的核心控制器是一个Filter,而不是一个servlet,那么在web,xml文件中就需要配置FilterDispather,如 <filter><!–配置STRUTS2核心Filter的名字–><filter