题目

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

样例输入:

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

分析与解答

1.单词标准化
标准化方式:全转化成小写字母之后再进行排序
如果一个单词经重排后能得到输入文本中另外一个单词,那经标准化后这单词有多个
2.利用map存标准化后的单词
每一个标准化的单词为key,个数为value,用map存起来
3.用words存初始单词
4.用ans存满足答案的单词
具体判断方法:word中单词在map中标准化对应的value为1
5.输出ans
自动由小到大输出

需要了解的:
vector< string> a;
sort(a.begin(),a.end())多个单词排序
string a=s;
sort(a.begin(),a.end())一个单词排序
map中count() 返回指定元素出现的次数

#include <map>
#include <vector>
#include <cctype>
#include <string>
#include <iostream>
#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);//count() 判断是否有元素 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;
}

(STL,map)反片语相关推荐

  1. [UVA156]反片语 Ananagrams 题解(映射:map 详解)

    反片语 Ananagrams - 洛谷 Most crossword puzzle fans are used to anagrams - groups of words with the same ...

  2. C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)

    1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...

  3. STL map 简介

    STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...

  4. 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~

    某公司招聘的面试环节, 有这样一个题目:结构体作为STL map的key时需要注意什么? 对于懂STL map的同学来说, 这个题目还是比较easy的, 先看程序: #include <iost ...

  5. Dictionary,hashtable, stl:map有什么异同?

    Dictionary,hashtable, stl:map有什么异同? 相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采 ...

  6. C++ STL map的使用

    C++ STL map的使用   2009-12-11 作者:tanker1024 来源:tanker1024的blog   1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的 ...

  7. 学习STL map, STL set之数据结构基础

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. C++ STL 之所以得到广泛的赞誉,也被很多人使用 ...

  8. STL map与Boost unordered_map - 有何不可的日志 - 网易博客

    STL map与Boost unordered_map - 有何不可的日志 - 网易博客 STL map与Boost unordered_map 2012-03-30 16:06:26|  分类: c ...

  9. STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树

    STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树 最近在做项目时发现一个crash的问题,当时得到的dmp文件显示crash在一个以map为循环变量的循环中,crash位置在如下 ...

  10. stl::map之const函数访问

    如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...

最新文章

  1. BootLoader与MCU启动过程
  2. Oral English 1: A topic about public transportaion in Chicago.
  3. oracle 三表关联更新_Oracle数据库入门
  4. Monkey原理初步和改良优化--Android自动化测试学习历程
  5. spring配置连接mysqlxml
  6. android 中 Proguard 和JNI 相关
  7. Diango博客--16.稳定易用的 Django 分页库,完善分页功能(二)
  8. 飞鸽传书写每行都认认真真
  9. python中remove用法_python中remove的一些坑
  10. python开发效率怎样提高_python 提高开发效率的5个小技巧
  11. [转]-Sublime Text 3最好的功能、插件和设置
  12. Android数据库一些源码分析
  13. JavaWeb:JSP、EL、JSTL
  14. c++函数可变参数的使用
  15. 计算机二级office树的知识,计算机二级office选择题白话串讲--二叉树,是什么树?(1)...
  16. freqz之C实现例程
  17. linux 命令详解 大于号_shell重定向(大于号,小于号,左右,21,)
  18. 天津大学计算机学院院长及副院长,微软亚洲研究院副院长周明教授和段楠研究员来天津大学-中国计算机学会...
  19. #655 – 冒泡事件可能会被某些控件屏蔽(Bubbling Mouse Events Swallowed by Some Controls)
  20. python画皮卡丘

热门文章

  1. 偶尔所得代码片(进程和锁相关)
  2. oracle first_rows怎么用,优化模式区别(all_rows first_rows_n)
  3. decimalformat精度丢失_php intval 两位小数乘以100后结果少1
  4. qt 5编程入门(第2版)_《C++并发编程实战第2版》第六章:设计基于锁的并发数据结构(1/3)...
  5. 批处理结束某个进程_进程调度
  6. python二维表转一维表_二维表格转换成一维表格
  7. jackson 读取多文件_Spring Boot系列之读取配置
  8. MySQL+for+Mac下载_MySQL For mac
  9. Edge使用手机版切换到电脑模式的方法
  10. 优酷视频如何在手机进行安全设置?