算法习题---5.4反片语(Uva156)
一:题目
输入一些单词,找出所有满足以下条件的单词:该单词不能通过字母重排得到输入文本中的另外一个单词。在判断是否满足条件时,字母不区分大小写,但在输出时应该保留输入中的大小写,按字典序进行排列
将输入的单词进行“标准化”,即将单词中的每个字母化为小写并按字典序重排单词,用一个字典来统计一个标准化的单词出现过多少次,输出的时候只输出在标准字典中出现一次的那些单词即可。
(一)样例输入
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
#
(二)样例输出
Disk
NotE
derail
drIed
eye
ladder
soon
二:代码实现
#define _CRT_SECURE_NO_WARNINGS
#define _SCL_SECURE_NO_WARNINGS
#include <iostream>
#include <map>
#include <string>
#include <sstream>
#include <algorithm> using namespace std;
map<string, string> source;
map<string, bool> result; int main()
{
freopen("data5_4.in", "r", stdin);
freopen("data5_4.out", "w", stdout); char low_str[];
string str;
while (true)
{
cin >> str;
if (str == "#")
break; for (int i = ; i < str.length()+; i++)
low_str[i] = tolower(str[i]); //转小写 sort(low_str, low_str + str.length()); //将字符串排序
source.insert(pair<string, string>(str, string(low_str))); //将源字符串,排序字符串 --> 插入map中
auto pi = result.find(string(low_str)); //查找排序字符串是否在result映射中
if (pi == result.end())
result.insert(pair<string, bool>(string(low_str), true)); //如果是第一次出现,则设置为true
else
pi->second = false; //如果是出现多次,则设置为false
} //进行遍历处理
for (map<string, string>::iterator iter = source.begin(); iter != source.end();iter++)
{
auto it = result.find(iter->second);
if ((*it).second) //找到所有的 在result映射中只出现过一次的字符串
cout << iter->first << endl; //输出源字符串
} freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
return ;
}
算法习题---5.4反片语(Uva156)的更多相关文章
- 【算法习题】数组中任意2个(3个)数的和为sum的组合
题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...
- uva 156 - Ananagrams (反片语)
csdn:https://blog.csdn.net/su_cicada/article/details/86710107 例题5-4 反片语(Ananagrams,Uva 156) 输入一些单词,找 ...
- UVa-156 Ananagrams 反片语【map】【vector】
题目链接:https://vjudge.net/contest/211547#problem/D 题目大意: 输入一些单词,找出所有满足以下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一些 ...
- 反片语(UVa156)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&a ...
- 5_4 反片语(UVa156)<map的使用>
输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母不区分大小写,但在输出的时候保留输入时的大小写,按字典序进行排列. 样例输入: ...
- 【C/C++】例题5-4 反片语/算法竞赛入门经典/C++与STL入门/映射:map
本题是映射:map的例题. map:键值对. [题目] 输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词. 在判断是否满足条件时,字母不分大小写,但在输出 ...
- July 算法习题 - 字符串4(全排列和全组合)
https://segmentfault.com/a/1190000002710424 思想:当前层各节点首元素不同,则各节点的剩余元素也不同:下一层节点交换范围为首元素以外的元素 全排列算法: vo ...
- 算法习题---4-9数据挖掘(Uva1591)
一:题目 这是最懵逼的一道题,什么鬼......... [刷题]算法竞赛入门经典(第2版) 4-9/UVa1591 - Data Mining(详细题目看这个吧,不想多说) 二:代码实现 #defin ...
- tarjan算法 习题
dfs树与tarjan算法 标签(空格分隔): 517coding problem solution dfs树 tarjan Task 1 给出一幅无向图\(G\),在其中给出一个dfs树\(T\), ...
随机推荐
- vue-router路由拦截基本设置,md5加密,js-cookie,vuex刷新页面store中的数据丢失等
vuex持久化 vuex-persistedstate
- LA 3704细胞自动机——循环矩阵&&矩阵快速幂
题目 一个细胞自动机包含 $n$ 个格子,每个格子的取值为 $0 \sim m-1$.给定距离 $d$,则每次操作是将每个格子的值变为到它的距离不超过 $d$ 的所有格子的在操作之前的值的和除以 $m ...
- Vector(同步)和Arraylist(异步)的异同
// 同步 异步 //1 同步 //2 异步 //未响应 = 假死 占用内存过多 内存无法进行处理 //请求方式:同步 异步 //网页的展现过程中:1 css文件的下载 ...
- 如何轻松愉快地理解条件随机场(CRF)
https://blog.csdn.net/DCX_abc/article/details/78319246 机器学习之条件随机场(CRF): https://blog.csdn.net/wangya ...
- DOS窗口操作MySQL数据库
本周学习内容: 1.学习MySQL数据库.Linux私房菜: 2.等级评测培训: 3.练习MySQL数据库.练习CentOS7: 实验内容: 1.使用DOS窗口进入MySQL数据库 2.解决MySQL ...
- bzoj 1100: [POI2007]对称轴osi 思维
特别神的一道题. 有一句话要反复揣摩:题中给的所有点构成一个多边形!! 而且读入还是按照多边形的轮廓读进来的!!! 我们知道,如果对称轴确定的话判定条件是对应角相等且对应边相等. 所以把相邻边夹角和边 ...
- bg/fg/jobs
用于将某个任务放置后台运行,一般会与 ctrl+ z , fg, & 符号联用. 典型的场景就是将耗时的任务放于后台运行,例如打包某个占用空间大的目录,
- [CF855G]Harry Vs Voldemort
[CF855G]Harry Vs Voldemort 题目大意: 一棵\(n(n\le10^5)\)个结点的树,\(q(q\le10^5)\)次操作,每次增加一条新边.每次操作后,你需要统计形如\(( ...
- Unity 3d 实现物体跟随摄像机视野运动
https://blog.csdn.net/qq_31411825/article/details/61623857 Unity 3d 实现物体跟随摄像机视野运动Created by miccall ...
- [php]Windows环境下Composer的安装教程
方法一: 下载Composer-Setup.exe后安装,它会自动搜索 php.exe 路径, 如果找不到,则手动添加路径. Windows安装Composer 方法二: 如果出现如下错误,说明伟 ...