Uva 156 - Ananagrams
2016-07-06 10:57
441 查看
题目倒是不难,但是通过这道题可以学习一下对STL的运用,同时深深地感觉到sort函数的强大。
题目思路:把每个单词“标准化”,即全部转化为小写字母后再进行排序,使得每个单词都是按照字典序排序,然后再放到map中进行统计。
注:在这道题中通过sort函数既实现了对许多单词按照字典序排序,也实现了将一个单词按照字典序对字母进行重排,orz,sort真的好强!!!
贴代码:
题目思路:把每个单词“标准化”,即全部转化为小写字母后再进行排序,使得每个单词都是按照字典序排序,然后再放到map中进行统计。
注:在这道题中通过sort函数既实现了对许多单词按照字典序排序,也实现了将一个单词按照字典序对字母进行重排,orz,sort真的好强!!!
贴代码:
#include <algorithm> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <ctype.h> #include <iostream> #include <sstream> #include <map> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #define eps 1e-8 #define INF 0x7fffffff #define PI acos(-1.0) #define seed 31//131,1313 #define MAXV 50010 typedef long long LL; typedef unsigned long long ULL; using namespace std; string repr(const string &s){ string ans=s; for(int i=0;i<ans.length();i++){ ans[i]=tolower(s[i]); } sort(ans.begin(),ans.end()); return ans; } int main() { vector<string> words; string s; map<string,int> cnt; while(cin>>s) { if (s[0]=='#') break; words.push_back(s); string r=repr(s); 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; }
相关文章推荐
- n的m次方的计算(Exponentiation)
- Python IDE: 10个最好用的python集成开发环境(IDE)
- ZooKeeper Java例子(六)
- C# 深拷贝的具体代码的封装与调用
- CreateProcess[转载]
- HDU 3306 - Another kind of Fibonacci
- ArcGis :正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- C++之类和对象课后习题1
- java多线程机制
- BZOJ 3110 题解
- 针对BootStrap中tabs控件的美化和完善(推荐)
- HSSFColor 颜色整理
- 最小生成树 hdoj1233 nyoj38
- 【Log4j2 配置详解】log4j2的资源文件具体怎么配置
- 一台服务器部署多个tomcat
- 一个短信验证的布局
- UVA 10934 Dropping water balloons
- 上传文件以二进制的形式存储
- struts2基础——请求与响应、获取web资源
- 集成测试单元测试.系统测试,的联系和区别