杭电oj HDOJ 2072 单词数

Problem Description

lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。

Input

有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

解题思路

把读取到的字符串以“空格”隔开,统计不同单词的数量

本人的C++解决方案

#include <iostream>
#include <string>
#include <set>
#include <sstream>
using namespace std;int main()
{string sen, word;stringstream ss;set<string> s;while (getline(cin, sen)) {if (sen == "#") {break;}ss<<sen;// 把读取到的字符串以“空格”隔开while (ss>>word) {s.insert(word);}// 统计不同单词的数量cout<<s.size()<<endl;s.clear();// 清空流中错误标记,以免下次使用输入错误信息ss.clear();}return 0;
}

本题涉及到的关于“处理字符串”的内容:(之前在2054题中说过的,这里就不再说了!)

  1. 字符串的读取:cingetline

我们最熟悉的读取方法就是cin,但是对于有“空格”的字符串,cin无法读取到完整的一个字符串,而是读到第一个“空格”就结束了。getline(cin, str)则可以读取完整的字符串,以“回车”为结束标识(不读取“回车”)。

  1. 把字符串分割成单词:stringstream

对于字符串的输入和输出,C++引入了istringstreamostringstreamstringstream三个类,使用时必须引入头文件#include <sstream>

istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C++风格的串流的输出操作。
stringstream类同时可以支持C++风格的串流的输入输出操作。

stringstream << string:向流中传值
stringstream >> string:向字符串中写值
stringstream.clear():清空流中的错误标记,这里并不是“清空流”。

stringstream创建字符串流时,会把“空格”作为流中字符串的内部分解,刚好可以利用这种特性分割出单词。

  1. 统计不同单词的数量:set容器

set容器是C++中的一种关联容器,其特点是:容器存储同一数据类型的数据、容器中每个元素的值都不同(这就是本题使用它的原因)、容器中的数据会自动排序。

set.clear():清除容器中的所有元素。
set.size():返回容器中的元素个数。
set.insert():向容器中插入元素。

上述相关内容还有许多其他用法,请读者自行寻找查阅。

代码通过HDOJ平台运行通过检查,如发现错误,欢迎指出和纠正,谢谢!

杭电oj HDOJ 2072 单词数相关推荐

  1. 杭电oj HDOJ 1018 Big Number(斯特林公式求大数阶乘的位数)

    杭电oj HDOJ 1018 Big Number 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1018 Problem Description In ...

  2. HDOJ 2072 单词数

    Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. ...

  3. 杭电OJ(HDOJ)入门题目列表

    杭电OJ链接: http://acm.hdu.edu.cn/ 注册与使用指南: https://blog.csdn.net/qq_38769551/article/details/101510000 ...

  4. 杭电OJ,已重新开放!HDOJ

    前几天我们介绍了网络上有很多可以练习上机考试刷题的网站,叫做OJ(Online Judge).还提到了一些学校已经公布了复试上机的说明,可以提前练习. 已经有211大学发布计算机专业,研究生复试上机考 ...

  5. c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

  6. c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

  7. HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)

    今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...

  8. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  9. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

最新文章

  1. Android 实现 调用 WPS Office手机版接口
  2. amh支持java吗_AMH 6.0 发布,国内领先的云主机面板
  3. 深度学习核心技术精讲100篇(二十七)-如何利用NLP技术对ASR的query文本进行预处理纠错?
  4. java内部类的作用
  5. python一对一_Python - Django - ORM 一对一表结构
  6. 关于Mybatis的一些问题
  7. 骁龙888打开“新象限” ,专业相机和游戏机直呼不讲武德
  8. idea配置tomcat热部署
  9. 金庸:为什么历史上没有一个国家能成功吞并中国?
  10. 搜索中文与外文数据库中的综述类文献
  11. SpringBoot整合Shiro搭建登录注册认证授权权限项目模板
  12. 刚刚!国产大数据基础软件第一股星环科技成功上市,开盘大涨超52%
  13. 傻子也能看懂的迪杰斯特拉算法(转)
  14. python pickle and json
  15. 【AGC004E】Salvage Robots【动态规划dp】
  16. 【GameObject 类】 (四)SetActive 显示 / 隐藏游戏对象
  17. 550 Recipient unknown
  18. C2B的未来:大数据定制
  19. FMEA失效模式各独立风险需严守【S/O/D】标准
  20. win10安装包管理工具Chocolatey

热门文章

  1. 微信小程序按钮添加背景
  2. 微信小程序 - “本地资源图片无法通过WXSS 获取,可以使用网络图片,或者 base64,或者使用标签” 解决
  3. 战列舰机械计算机,问个事,二战时期的战列舰可以装备垂直稳定仪么?
  4. 英语构词法软件wordformation发布全新1.0版本
  5. 微信气泡主题设置_微信气泡主题华为手机要怎么弄 华为手机微信气泡主题设置方法介绍...
  6. EXCEL数据分析——上海餐饮数据分析
  7. 学习记录, 带你玩转Pyppeteer (全干货)
  8. cve查询_CVE年满21岁:如何实现这一里程碑
  9. AI 编程助手 亚马逊CodeWhisperer使用简介
  10. 百分六用计算机该怎么算,24975000的百分之五是多少,用计算器怎么算?