Ananagrams 

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 letters, you cannot form another word. Such words are called ananagrams, an example is QUIZ.

Obviously such definitions depend on the domain within which we are working; you might think that ATHENE is an ananagram, whereas any chemist would quickly produce ETHANE. One possible domain would
be the entire English language, but this could lead to some problems. One could restrict the domain to, say, Music, in which case SCALE becomes a relative ananagram (LACES is not in the same domain) but NOTE is not since it can produce TONE.

Write a program that will read in the dictionary of a restricted domain and determine the relative ananagrams. Note that single letter words are, ipso facto, relative ananagrams since they cannot
be ``rearranged'' at all. The dictionary will contain no more than 1000 words.

Input

Input will consist of a series of lines. No line will be more than 80 characters long, but may contain any number of words. Words consist of up to 20 upper and/or lower case letters, and will not
be broken across lines. Spaces may appear freely around words, and at least one space separates multiple words on the same line. Note that words that contain the same letters but of differing case are considered to be anagrams of each other, thus tIeD and
EdiT are anagrams. The file will be terminated by a line consisting of a single #.

Output

Output will consist of a series of lines. Each line will consist of a single word that is a relative ananagram in the input dictionary. Words must be output in lexicographic (case-sensitive) order.
There will always be at least one relative ananagram.

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

题意  给你一篇文章  以"#"号结束   按字典序求输出这篇文章中真正仅仅出现过一次的单词   就是不能通过字母又一次排列得到文章中还有一个单词的单词

把每一个单词的字母所有化为小写  再把这个单词中的字母按字典序排列  得到一个字符串  用map记下出现次数即可   仅仅出现过一次的就是要输出的

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<cctype>
#include<map>
using namespace std;
typedef vector<string>::iterator it;
vector<string> ans;
map<string, int> cnt, tcnt;
map<string, string> ss;
int main()
{
string s, t;
while (cin >> s, s != "#")
{
t = s;
ans.push_back (s);
for (int j = 0; j < t.length(); ++j)
t[j] = tolower (t[j]);
sort (t.begin(), t.end());
ss[s] = t;
++cnt[t];
}
sort (ans.begin(), ans.end());
for (it i = ans.begin(); i < ans.end(); ++i)
if (cnt[ss[*i]] == 1) cout << *i << endl;
return 0;
}

最新文章

  1. LCA 倍增||树链剖分
  2. HTML 格式化等处理方法
  3. Activity源码简要分析总结
  4. 嵌入式Linux驱动学习之路(三)u-boot配置分析
  5. jQuery validate 验证隐藏域
  6. Thinkpad 小紅點設定
  7. 搜索 基础 AC 2014-01-14 15:53 170人阅读 评论(0) 收藏
  8. CodeForces 689C Mike and Chocolate Thieves (二分+数论)
  9. Java比较器对数组,集合排序一
  10. UIScrollView的属性总结
  11. github快速入门(一)
  12. 使用 git 进行项目管理(只管理代码,不管理项目配置)
  13. CentOS 6.7编译安装MySQL 5.6
  14. SQL2008数据库连接服务器为主机名时连接成功,服务器为Ip地址时链接失败
  15. 关于group by【转载】
  16. 使用ArcGIS API for Silverlight实现地形坡度在线分析
  17. 【BZOJ3524/2223】[Poi2014]Couriers 主席树
  18. p3966单词
  19. NGUI_创建图集Altas
  20. zsh &amp; tree &amp; macOS

热门文章

  1. killer驱动
  2. 关于0x*** 十六进制的运算。为什么枚举多用十六进制的运算原因。。
  3. 使用QML创建界面(转)
  4. linux缺页异常处理--用户空间【转】
  5. mysql 共享空间转为独立表空间
  6. nginx 根据url访问次数限制
  7. 【linux高级程序设计】(第九章)进程间通信-管道 2
  8. Appium+python自动化11-adb必知必会的几个指令【转载】
  9. 中控考勤机WEB主动上报接收SERVER程序
  10. SpringMVC + Hibernate + MySQL 的简易网页搭建(Dao层 实现篇)