单词数 HDU 2072 字符串输入控制
单词数 HDU 2072 字符串输入控制
题意
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
解题思路
我的是使用map来进行统计的,确实比较慢了一些,因为输入的问题代码也写的比较垃圾。之后看了网上的题解,代码写得让人拍案叫绝。下面两个代码就是从这个博客上看到的
//方法一:使用gets全部读入,然后使用strtok函数进行分割,最后使用set容器来进行去重。
//代码进行了一下修改。
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
char buf[1024], delim[]=" ", *p;
set<string> w;
int main()
{
while(gets(buf)!=NULL) //gets函数在正常情况下会返回与参数相同的指针,在错误的情况下返回NULL
{
if(strcmp(buf, "#")==0)
break;
w.clear();
p=strtok(buf, delim);
while(p)
{
w.insert(p);
p=strtok(NULL, delim);
}
printf("%d\n", w.size());
}
return 0;
}
/* HDU2072 单词数 */
#include <iostream>
#include <cstdio>
#include <sstream> //这个包含istringstream,ostringstream,stringstream三个函数
#include <set>
using namespace std;
int main()
{
string s;
while(getline(cin, s) && s != "#") {
stringstream sin(s);
set<string> words;
string w;
while(sin >> w)
words.insert(w);
cout << words.size() << endl;
}
return 0;
}
另外附上自己的比赛时写的小代码。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
const int maxn=1e5+7;
map<string, int> mp;
char str[maxn];
char a[maxn];
int main()
{
int ans=0, i, len;
char tmp;
while(gets(str)&& str[0]!='#')
{
ans=0;
mp.clear();
len=0;
while( sscanf(str+len, "%s", a)!=EOF)
{
if(mp[a]==0)
{
mp[a]=1;
ans++;
}
len+=strlen(a)-1;
for(int i=1; ; i++)
{
if(*(str+len+i)!=' ')
{
len=len+i;
break;
}
}
}
printf("%d\n", ans);
}
return 0;
}
单词数 HDU 2072 字符串输入控制的更多相关文章
- 题解报告:hdu 2072 单词数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...
- HDU 2072 单词数
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2072 普通解法: /* HDU 2072 单词数 --- 字符串处理 */ #include < ...
- HDU 2072(字符串的流式操作,学习了)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2072 单词数 Time Limit: 1000/1000 MS (Java/Others) Me ...
- hdu 2072 单词数(字符串)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题意 每行输入由小写字母和空格组成,统计每行中不同的单词数. 题解 题解一 比较简洁的解法,读入 ...
- HDU 2072(单词数)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] “就是统计一篇文章里不同单词的总数”(已经是一句话了..) [题目分析] 明显需要去重,上set,因为按行分析,又没有EOLN用 ...
- 翻译器DIY它———算在英文文本中的单词数,字符和行数
咳咳.这部分应该是序列化编译器DIY的,然而,在这样做DIY第一次使用前flex 为了练练手,对于后者的理解是有帮助. 在word 我经常看到一个字计数功能,因此,它是如何实现,当然,首先想到的是要经 ...
- HDU 2072 单词数 详细解答
题目 单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- WordCount--统计输入文件的字符数、行数、单词数(java)--初级功能
码云地址: https://gitee.com/YuRenDaZ/WordCount 个人PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 180 ...
- 1185: 零起点学算法92——单词数(C)
一.题目 http://acm.wust.edu.cn/problem.php?id=1185&soj=0 二.分析 统计的是不同的单词数,即重复的单词只统计一次: 多组输入: 每行不超过10 ...
随机推荐
- msf生成后门拿shell
0X01简介 这里我本来想学习 msf利用漏洞反弹shell的 但是 没有靶机....等找了靶机在弄吧 kali 172.18.5.118 靶机 172.18.5.240 先尝试能不能ping通 好 ...
- wannafly 练习赛11 B 假的字符串(字典树+建边找环)
链接:https://www.nowcoder.com/acm/contest/59/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit ...
- yum install ntp 报错:Error: Package: ntp-4.2.6p5-25.el7.centos.2.x86_64 (base)
redhat7 在安装ntp时报如下错误 Error: Package: ntp-4.2.6p5-25.el7.centos.2.x86_64 (base) Requires: ntpdate = 4 ...
- PHP通用后台管理系统发布!
下载地址:https://gitee.com/lim2018/phpadmin
- spring cloud:gateway-eureka
gateway-server-eureka 1. File-->new spring starter project 2.add dependency <dependency> &l ...
- MVC的一个简单实例
基本思路: 一个Regist.jsp注册页面,用于收集用户信息,发送请求给控制器Servlet:控制器层Servlet封装模型层对象 jBean,并调用其方法regiser实现用户信息的保存:模型层J ...
- Linux下服务器开发的必要准备
一.Windows下安装Xshell 二.Linux开启SSH 可以先查询有没有SSH服务 sudo ps -e |grep ssh 没有安装SSH的服务器 sudo apt-get install ...
- 快速找到oracle的alert日志
https://jingyan.baidu.com/article/f3ad7d0fe5d31309c3345b9b.html
- curl下载文件时自动创建目录
有时候需要自动创建多级目录 按照如下格式即可 curl -o d:/lei/demo/test.jpg --create-dirs http://img.7160.com/uploads/allimg ...
- LInux 下PHP环境配置 Redis 总结
系统 Deepin ,环境 PHP7.0 + Apache2 安装 Redis 服务 sudo apt-get install redis-server //安装 sudo /etc/init.d/r ...