概述:

输入一个文本,找出所有不同的单词,按字典序排序,去重后,输出,单词不分大小写。

储备知识:

1、sstring头文件的用法→sstring头文件函数详解
2、cctype头文件的用法→cctype头文件函数详解


题目(提交)链接→UVa-10815
没使用过该网站的同学请猛戳这里→vJudge教程


分析

一、我的思路是:
读到大写字母就转化成小写的,读到小写就存入字符串s,读到非字母就代表这个单词结束了, 将串压入set集合,清空串,循环进行。值得注意的一点是:串的长度为0,也是串,叫做“空串”。也会被压入set。所以压入前要判断一下长度是否为0.为什么会有这种弱智的设定。。。。由于每次都要判断长度,时间复杂度提升,显然不是最优解,代码会贴出来供大家参考。
二、刘先生的思路是:
将大写字母转为小写,将除字母外所有字符转化为空格,最后用stringstream以空格为分界做转化。

我的代码:

#include<iostream>
#include<cctype>
#include<set>
using namespace std;
int main() {string s;char ch;set<string> s1;while((ch = getchar()) != EOF) {if(isupper(ch)) ch = tolower(ch);if(islower(ch)) s += ch;else { if(s.length() != 0) { s1.insert(s); s.clear(); }}}set<string>::iterator it;for(it = s1.begin(); it != s1.end(); it++)   //set中第一个值是ctrl+z后的那个回车。 cout << *it << endl; return 0;}

刘先生的代码:

#include<iostream>
#include<string>
#include<set>
#include<sstream>
using namespace std;set<string> dict;int main() {string s, buf;while(cin >> s) {for(int i = 0; i < s.length(); i++)if(isalpha(s[i])) s[i] = tolower(s[i]); else s[i] = ' ';stringstream ss(s);                    //将s装入ss while(ss >> buf) dict.insert(buf); }for(set<string>::iterator it = dict.begin(); it != dict.end(); ++it) cout << *it << '\n';return 0;
}

收获:

1、字符串长度为0,也是字符串,叫做“空串”
2、z的阿斯克码值等于122
3、巩固了cctype的知识
4、学习了stringstream的新用法

算法竞赛入门经典(第二版) | 例题5-3 安迪的第一个字典 (紫书牛啤!)(UVa10815,Andy's First Dictionary)相关推荐

  1. 算法竞赛入门经典(第二版) | 例题4-3 救济金发放 (UVa133,The Dole Queue)

    提目(提交)链接→UVa-133 百度翻译→百度翻译 没使用过该网站的同学请猛戳这里→vJudge教程 分析: 最开始的固有思维是循环就用循环链表,其实完全可以把它看成一个大一点的周期类型题(一个大周 ...

  2. 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法二)

    本着清晰明了易懂可以水两篇 的理念,笔者将这道题分两次发布.这是第二种解法. 第一种解法传送门→解法一+提交网址 因为解法1中有详细关于题目和输入输出格式等的介绍,这里就不过多赘述了. 分析: 一些初 ...

  3. 算法竞赛入门经典(第二版) | 例题4-2 刽子手游戏 (UVa489,Hangman Judge)

    大家站在出题者的角度考虑,我们出了一道大水题,会让它又臭又长或是用复杂的函数吗? 不会.所以做这种题千万不要想得太复杂.循环+数组足矣. 提目(提交)链接→UVa-489 百度翻译→百度翻译 没使用过 ...

  4. 算法竞赛入门经典(第二版) | 例题5-4 反片语 (map+标准化)(UVa156,Ananagrams)

    题目大意: 输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序排列. 题目( ...

  5. 算法竞赛入门经典(第二版) | 例题5-2 木块问题 (紫皮书牛啤!)(UVa101,The Blocks Problem)

    大意: 输入n,代表n个木块,输入最多n种操作类型,按类型对木块进行操作,读入quit结束 输入输出格式: 1.move a onto b:将a和b所在上方的方块先归位,再将a移到b所在柱子 2.mo ...

  6. 算法竞赛入门经典(第二版) | 例题5-1 大理石在哪 (普适查找)(UVa10474,Where is the Marble?)

    大意: 给一序列,要求先将序列排序.再给n个数字,找到每个数字在序列中的位置 储备知识→algorithm头文件函数详解 题目(提交)网址→UVa-10474 百度翻译→百度翻译 没使用过该网站的同学 ...

  7. 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法一)

    大意 输入:r(行)c(列)n(种操作)m(个行/列),给出具体行/列 x(个坐标),给出具体坐标. 输出:m个坐标经过n种操作后分别移动到了哪里. 注意:所有操作都是根据原始表进行的,如:1,2,3 ...

  8. 算法竞赛入门经典(第二版) | 例题4-4 信息解码 (紫皮书牛啤!)(UVa213,Message Decoding)

    大意: 二进制编码中取前三位,得到编码长度为n(0<=n<=7), 按此长度重复截取编码中剩余部分(n位一截),直到读取n个1结束.再次取三位,长度为n,重复上述操作-直至n个1后接000 ...

  9. UVA-12171 雕塑 题解答案代码 算法竞赛入门经典第二版

    GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 这道题目在<算法竞赛入门经典第二版>书中标注了星号,也是第一道出现星号的 ...

最新文章

  1. AJAX相关JS代码片段和部分浏览器模型
  2. 阿里云栖开发者沙龙PHP技术专场-聊聊服务稳定性保障这些事
  3. 吐槽Javascript系列三:数组的陷阱
  4. virt-install选项详解
  5. 增强SEO的div+css命名规则
  6. Omnet 4.2.2 errorList
  7. 如何用UE4制作2D游戏文档(五)——战斗篇
  8. APP支付(微信、支付宝)
  9. 【python 色情图片识别】python检测色情图片
  10. 不一样的类小草图形写法
  11. 前度字符串转数组_java中的hashcode 前度刘郎
  12. Mac 破解IDEA 持续更新
  13. 水滴筹、轻松筹死磕健康保
  14. w ndows10怎重装系统,笔记本重装系统教你笔记本怎么重装win10系统
  15. DOS命令CD D:\ 不管用,怎么进入D盘
  16. 软件测试之实用小工具推荐
  17. java转义字符对照表
  18. 非迅雷会员免费看云点播方法,无需软件享官方云点播
  19. 博学谷学习记录之人工智能(python基础语法)第一篇
  20. Linux 批量重命名工具 rename 的使用

热门文章

  1. 高薪Java工程师必看的书籍
  2. Java 8 Lambda 表达式被编译成了什么?
  3. RabbitMQ Network Partitions
  4. 又是金三银四,都是Java程序员,你为什么面试总拿不到高薪?
  5. 介绍一个欧神写的剪贴板多端同步神器
  6. 《超低延时直播白皮书》已发布,推动直播延时降低90%以上
  7. 【线上圆桌】视频会议下半场
  8. 展望2018,多媒体开发新趋势
  9. 大牛书单 | 迎金秋,与腾讯技术大咖共读好书
  10. 腾讯成联合国全球合作伙伴,TDSQL如何支撑史上最大规模全球会议