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属于一个单词出现两次).最后按照字典序 ...
随机推荐
- Excel数据统计与分析
- CON2 工单重估 效率提升
CON2 工单重估 效率提升 业务背景:月结CON2 每次只能允许一个进程操作 集团公司较多的话,很影响月结效率. SAP提供了专家模式程序 RKAZCON2 ,可以选平行运行 平行处理 需要选服 ...
- 在EXCEL表格中快速自动求和
在Microsoft Excel中,可以通过多种方式快速自动求和.以下是一种简单但常用的方法: 使用SUM函数 选定求和区域: 在Excel表格中,首先需要选定要进行求和的区域.这可以是一个列.行或者 ...
- 如何自学 PS、PR 等软件?
学习Photoshop(PS)和Premiere Pro(PR)等软件需要一定的时间和耐心,以下是非常详细的自学指南. 第一部分:规划学习路线 1. 确定学习目标 在自学PS和PR之前,首先要明确自己 ...
- 文心一言 VS 讯飞星火 VS chatgpt (148)-- 算法导论12.2 3题
三.用go语言,写出过程 TREE-PREDECESSOR 的伪代码. 文心一言: 以下是使用Go语言编写的TREE-PREDECESSOR函数的伪代码: func TREE-PREDECESSOR( ...
- Maven的安装与配置本地仓库,镜像源,环境变量。
参考视频: 黑马程序员2023新版JavaWeb开发教程,实现javaweb企业开发全流程 [小飞非系列]最新Maven实战教程-项目实战构建利器 一.下载Maven安装包 注意安装maven前要先安 ...
- nginx+lua+redis实现灰度发布
前言: 授人以鱼不如授人以渔.先学会用,在学原理,在学创造,可能一辈子用不到这种能力,但是不能不具备这种能力.这篇文章主要是沉淀使用nginx+lua+redis实现灰度,当我们具备了这种能力,随时可 ...
- hdu4365 Palindrome graph
Palindrome graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 神经网络优化篇:如何理解 dropout(Understanding Dropout)
理解 dropout Dropout可以随机删除网络中的神经单元,为什么可以通过正则化发挥如此大的作用呢? 直观上理解:不要依赖于任何一个特征,因为该单元的输入可能随时被清除,因此该单元通过这种方式传 ...
- thymeleaf使用
thymeleaf使用 1.依赖 <parent> <artifactId>spring-boot-starter-parent</artifactId> < ...