https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=92

输入一些单词,找出所有符合条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。判断条件是否满足时,字母不分大小写,但在输出时应保留输入中的大小写。

并将这些输出的单词按字典序顺序排列

map的count方法,如果map里面有这个元素就返回1,否则返回0.

vector的push_back()在尾部添加元素

这题还可以学习的是对每个单词进行标准化的技巧:变成小写的字典序排列,那么如果有能通过字母重排得到的单词,他们就是一样的。在这道题里非常容易判断。

 #include<bits/stdc++.h>
using namespace std;
map<string,int>cnt;
vector<string>words;
//将单词标准化(变成小写的字典序)
string repr(const string& s)
{
string ans=s;
for(int i=; i<ans.length(); i++)
{
ans[i]=tolower(ans[i]);
}
sort(ans.begin(),ans.end());//string类型可以用begin和end
return ans;
}
int main()
{
string s;
while(cin>>s)
{
if(s[]=='#')break;
words.push_back(s);
string r=repr(s);
if(!cnt.count(r))cnt[r]=;//如果之前容器里面没有,就设为空
cnt[r]++;//记录这个单词出现的次数
}
vector<string>ans;
for(int i=;i<words.size();i++)
{
if(cnt[repr(words[i])]==)ans.push_back(words[i]); }
sort(ans.begin(),ans.end());
for(int i=;i<ans.size();i++)
{
cout<<ans[i]<<endl;
} return ;
}

最新文章

  1. .Net中的并行编程-6.常用优化策略
  2. crontab定时任务配置记录
  3. php正规则表达式的语法
  4. 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库
  5. apk反编译(2)smali语言及文件
  6. 洛谷 P1052 过河
  7. 【leetcode边做边学】二分查找应用
  8. Linux搭建FTP服务器
  9. SpartanBrowser产品和安全特性简介
  10. 蓝书例题之UVa 10253 Series-Parallel Networks
  11. 命令行获取zabbix最新的issues - jq 解释json
  12. python学习------面向对象进阶
  13. PID 通俗解释
  14. 修复PLSQL Developer 与 Office 2010的集成导出Excel 功能
  15. Python3学习笔记15-迭代器与生成器
  16. 认识flask框架-2
  17. CentOS 65 java 访问 MS SQL
  18. [转] PHP读取HTTP接口如何处理超时
  19. 《LeetBook》leetcode题解(7): Reverse Integer[E]——处理溢出的技巧
  20. Windows10 Oracle ODBC安装配置

热门文章

  1. Kali-linux无线网络嗅探工具Kismet
  2. Owin+ASP.NET Identity浅析系列(四)实现用户角色
  3. 超低功耗WiFi :ESP8089
  4. EF Core 2.1 Raw SQL Queries (转自MSDN)
  5. iOS 封装一个带复制功能的UILabel
  6. #leetcode刷题之路16-最接近的三数之和
  7. Hadoop相关笔记
  8. 使用babel插件集
  9. 前端用node+mysql实现简单服务端
  10. Kafka解惑之时间轮 (TimingWheel)