UVA 156 Ananagrams STL应用
https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=92
给定若干单词,按字典序输出不存在重排的单词。(经测试,不包含重复的单词)
重排单词:每个字母出现次数一样,但顺序不同,即对单词序列的一个排序
思路分析
是否满足重排可转换为等价问题:单词的构成字母与顺序无关,有两种解决思路(标准化)
- 字母计数:统计每个字母出现次数,若一致,说明满足重排
map<map<char,int>, int>dict; // 每个单词的字母出现次数->出现次数
- 统一排序:都按升序排列,若得到相同序列,说明满足重排
map<string, int> dict; // 标准化单词->出现次数
因此在标准化单词(全转为小写)后,边可按照不同思路统计次数,并记录相应到旧单词映射
- 定义
set ans;存储输出结果,自动按字典序排列
遍历每个标准化单词,若其出现次数为1,插入ans集合中,最后输出即可
AC代码(C++11,map标准化,顺序无关)
统一排序
#include<bits/stdc++.h>
using namespace std;
map<string, int> dict; // 标准化单词->出现次数
map<string, string> trans; // 单词字母出现次数->原单词
set<string> ans; // 存储输出结果,按字典序排列
string s, st;
int main() {
while (cin >>s && s!= "#") {
st = s;
for (auto& ch : st) // 转为小写
if (ch >= 'A' && ch <= 'Z') ch = tolower(ch); // 转为小写
sort(st.begin(), st.end()); // 升序排列,顺序无关
dict[st]++; // 统计次数
trans[st] = s; // 记录原单词
}
for (auto p : dict) if (p.second == 1) ans.insert(trans[p.first]); // 出现次数1表示非重排单词
for (auto& p : ans) cout <<p <<endl; // 直接输出剩下的单词
return 0;
}
字母计数
#include<bits/stdc++.h>
using namespace std;
map<map<char,int>, int>dict; // 每个单词的字母出现次数->出现次数
map<map<char,int>, string> trans; // 单词字母出现次数->原单词
set<string> ans; // 存储输出结果,按字典序排列
string s, st;
int main() {
while (cin >>s && s!= "#") {
st = s;
map<char, int> mp;
for (auto& ch : st) {
if (ch >= 'A' && ch <= 'Z') ch = tolower(ch); // 转为小写
mp[ch] ++; // 统计每个字符出现次数
}
dict[mp]++; // 统计次数
trans[mp] = s; // 记录原单词
}
for (auto p : dict) if (p.second == 1) ans.insert(trans[p.first]); // 出现次数1表示非重排单词
for (auto& p : ans) cout <<p <<endl; // 直接输出剩下的单词
return 0;
}
UVA 156 Ananagrams STL应用的更多相关文章
- UVa 156 Ananagrams(STL,map)
Ananagrams Most crossword puzzle fans are used to anagrams--groups of words with the same letters ...
- UVA 156 Ananagrams (STL multimap & set)
原题链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=98&p ...
- uva 156 - Ananagrams (反片语)
csdn:https://blog.csdn.net/su_cicada/article/details/86710107 例题5-4 反片语(Ananagrams,Uva 156) 输入一些单词,找 ...
- UVA 156 Ananagrams ---map
题目链接 题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序进行排列( ...
- UVa 156 Ananagrams
题意:给出一些单词,在这些单词里面找出不能通过字母重排得到的单词(判断的时候不用管大小写),然后按照字典序输出. 学习的紫书的map= = 将每一个单词标准化 先都转化为小写,再排序(即满足了题目中说 ...
- STL语法——映射:map 反片语(Ananagrams,UVa 156)
Description Most crossword puzzle fans are used to anagrams--groups of words with the same letters i ...
- 【UVA - 156 】Ananagrams (set,map,vector)
Ananagrams Descriptions: Most crossword puzzle fans are used to anagrams--groups of words with the ...
- 反片语(Ananagrams,Uva 156)
输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文 本中的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中 的大小写,按字典序进行排列(所有大写字母 ...
- Ananagrams UVA - 156
Most crossword puzzle fans are used to anagrams - groups of words with the same letters in differe ...
- UVA 156:Ananagrams (vector+map+sort)
题意:一大堆单词中间有空格隔开,以'#'结束输出,问只出现一次的的单词有哪些(如果两个具有相同的长度,相同的字母也算是相同的,不区分大小写,如:noel和lone属于一个单词出现两次).最后按照字典序 ...
随机推荐
- 震惊,微信小程序可以设置网络字体!真香
准备工作,获取字体链接 还原设计稿的时候需要用到如下特殊字体(google 的 Montserrat): https://fonts.google.com/specimen/Montserrat 选择 ...
- C/C++ 常用加密与解密算法
计算机安全和数据隐私是现代应用程序设计中至关重要的方面.为了确保数据的机密性和完整性,常常需要使用加密和解密算法.C++是一种广泛使用的编程语言,提供了许多加密和解密算法的实现.本文将介绍一些在C++ ...
- MySQL-安全更新参数
版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 注意! 生产环境中,updata必须要加where条件 1.开启安全功能,会提示你加where,不加会提示语法不正确. ...
- 小心C#中的只读结构体成员
示例 我们先来看一段结构体的代码 (基于 VS2022 + .NET 8.0) public struct MyStruct(int number) { public int Number = num ...
- vscode设置将英文界面设置为中文?
如果您希望将 Visual Studio Code(以下简称VSCode)的界面从英文设置为中文,可以按照以下步骤进行: 打开 VSCode 编辑器,并进入"扩展"菜单. 在搜索框 ...
- 掌握这些,轻松管理BusyBox:inittab文件的配置和作用解析
BusyBox 是一个轻量级的开源工具箱,其中包含了许多标准的 Unix 工具,例如 sh.ls.cp.sed.awk.grep 等,同时它也支持大多数关键的系统功能,例如自启动.进程管理.启动脚本等 ...
- 存储器 Memory
缩写 全称 翻译 用途 RAM Random Access Memory 随机存储器 SRAM Static RAM 静态RAM MCU的片上RAMCPU的L1.L2 cache DRAM Dynam ...
- 从根上理解elasticsearch(lucene)查询原理(1)-lucece查询逻辑介绍
大家好,我是蓝胖子,最近在做一些elasticsearch 慢查询优化的事情,通常用分析elasticsearch 慢查询的时候可以通过profile api 去分析,分析结果显示的底层lucene在 ...
- Linux笔记02: Linux环境_2.3 Linux网络连接
2.3 Linux网络连接 本节介绍VMware Workstation Player 17下CentOS 7的网络连接. 2.3.1 VMware网络类型 VMware提供的网络连接有5种: ●桥接 ...
- wife-wife【原型链污染】
wife-wife[原型链污染][难度:4] 题目界面 登录界面 注册界面 思路:在注册界面,利用原型链污染漏洞,获得管理员权限. 步骤 在注册界面输入用户名-密码-邀请码,勾选admin选项,抓包 ...