这题比较精妙的是,我们对于单词重排,实际上是进行了标准化的处理,即按照字典序排序。

这样的话,就很方便地处理了单词的重排问题,我们不需要使用全排列函数进行排列尝试,我们直接化简为一,然后进行比较就可以了。

然后我们使用map映射,映射每个单词的出现次数,只有等于一的,我们才输出原版的单词。

最后输出的时候我们对于最初读入的单词库,进行遍历,看它的映射值为多少,先写入,再排序,最后输出即可。

注:sort和se的默认排序都是按照字典序排序的。

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <cctype>
#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()
{
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] << endl;
return 0;
}

UVa-156-反片语的更多相关文章

  1. uva 156 - Ananagrams (反片语)

    csdn:https://blog.csdn.net/su_cicada/article/details/86710107 例题5-4 反片语(Ananagrams,Uva 156) 输入一些单词,找 ...

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

    Description Most crossword puzzle fans are used to anagrams--groups of words with the same letters i ...

  3. 反片语 UVA 156

    //该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母部分大小写 #include<iostream> #include<vector> #inc ...

  4. 反片语 (Ananagrams,UVa 156)

    题目描述: #include <iostream> #include <string> #include <cctype> #include <vector& ...

  5. 反片语(Ananagrams,Uva 156)

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

  6. UVa 156 (映射 map)

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

  7. 反片语(UVa156)

    题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&a ...

  8. UVA 156 Ananagrams (STL multimap & set)

    原题链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=98&p ...

  9. UVA 156 Ananagrams ---map

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

  10. UVa 156 Ananagrams

    题意:给出一些单词,在这些单词里面找出不能通过字母重排得到的单词(判断的时候不用管大小写),然后按照字典序输出. 学习的紫书的map= = 将每一个单词标准化 先都转化为小写,再排序(即满足了题目中说 ...

随机推荐

  1. spark sql 对接 HDFS

    上一篇博客我向大家介绍了如何快速地搭建spark run on standalone,下面我将介绍saprk sql 如何对接 hdfs 我们知道,在spark shell 中操作hdfs 上的数据是 ...

  2. 开车旅行 【NOIP2012 D1T3】

    开车旅行 [NOIP2012 D1T3] 倍增 首先令\(a[i]\)表示从i出发最近的城市下标,\(b[i]\)表示从i出发第二近的城市下标 可以维护一个\(\text{set<pair< ...

  3. 记一下一道关于finally的题

     题目: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { Syste ...

  4. getAnnotation为null的坑

    在写一个基于SpringAOP的权限控制的. 自己定义了一个注解,然后逻辑代码需要通过获取自定义注解的一个属性来进行权限控制. 下面简单上一下关键代码: 自定义注解: @Documented //有关 ...

  5. ubuntu触摸板关闭开启

    sudo rmmod psmouse          #用来禁用触摸板 sudo modprobe psmouse     #用来启用触摸板

  6. asp.net网页跳转

    1.Response.Redirect("http://www.bcbbs.net",false);    目标页面和原页面可以在2个服务器上,可输入网址或相对路径.后面的bool ...

  7. 在webconfig放置固定值

    通常的,为了布置到服务器后修改的方便通常把一些会改变的值放在webconfig: 首先在web.ocnfig中放入如下值 <appSettings> <add key="A ...

  8. 一个简单的注册页面,基于JS

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. ios 自定义加载动画效果

    在开发过程中,可能会遇到各种不同的场景需要等待加载成功后才能显示数据.以下是自定义的一个动画加载view效果.      在UIViewController的中加载等到效果,如下 - (void)vi ...

  10. Android 6.0动态权限(转)

    转自:http://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 Android 6.0 为了保护用户隐私,将一些权限的申 ...