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

Input

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

Output

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

Sample Input

you are my friend
#

Sample Output

4

// 不是统计没有重复的单词的总数
 #include<stdio.h>
#include<string.h>
int main()
{
char text[], word[], *p, *q;
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p); strcpy(word,p); flag=;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q);
if(strcmp(word,q)==)
{ flag=; break; }
}
if(flag) c++;
}
printf("%d\n", c);
}
return ;
}

WA

// 在文章中选定一个单词,在其后遍历. 若遇到相同的单词就删除
 #include<stdio.h>
#include<string.h> void del_word_from_sentence(char *p, int len)
{
int l=strlen(p);
for(int i=;i<len-l;i++)
p[i]=p[l++i];
} int main()
{
char text[], word[], *p, *q;
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p); strcpy(word,p); flag=; c++;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q);
if(strcmp(word,q)==)
{ flag++; del_word_from_sentence(q,text+len-q); }
}
if(flag) len-=flag*(k+);
}
printf("%d\n", c);
}
return ;
}

WA*2

// 每删掉一个单词就马上修改文章长度. 还是WA。。。
 #include<stdio.h>
#include<string.h> void del_word_from_sentence(char *p, int len)
{
int l=strlen(p);
for(int i=;i<len-l;i++)
p[i]=p[l++i];
} int main()
{
char text[], word[], *p, *q;
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p); strcpy(word,p); c++;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q); flag=;
if(strcmp(word,q)==)
{ flag=; del_word_from_sentence(q,text+len-q); }
if(flag) len-=k+;
} }
printf("%d\n", c);
}
return ;
}

WA*3

// 很大的数组不应该作为局部变量(有些OJ会限制局部数组的大小),做成全局变量不容易错
// 没有考虑连续空格的情况如:aa(空格)(空格)bbb
// 其他注意项见代码
 #include<stdio.h>
#include<string.h>
char text[], word[], *p, *q; void del_word_from_sentence(char *p, int len)
{
int l=strlen(p);
for(int i=;i<len-l;i++)
p[i]=p[l++i];
} int main()
{
int c, len, j,k, flag;
while(gets(text), text[]!='#')
{
len=strlen(text);
for(int i=;i<len;i++)
if(text[i]==' ')
text[i]='\0';
c=;
for(p=text;p<len+text;p+=k+)
{
k=strlen(p);
if(k==) continue;
strcpy(word,p); c++;
for(q=p+k+;q<len+text;q+=j+)
{
j=strlen(q);
if(j==) continue;
flag=;
if(strcmp(word,q)==)
{ flag=; del_word_from_sentence(q,text+len-q); }
if(flag)
{ len-=k+; j=-; } // 删除一个单词后q应不变,为凑q+=0,令j=-1.
}
}
printf("%d\n", c);
}
return ;
}

AC*2

// 详见代码
 #include<iostream>    // cin->stdin, cout->stdout, endl->os.put('\n')&os.flush()
#include<string> // string, getline()->gets()
#include<set> // set
#include<sstream> // istringstream
using namespace std; int main()
{
string text, w;
while(getline(cin,text), text!="#")
{
set<string> word;
istringstream stream(text);
while(stream>>w) // Extends the container by inserting new elements,
word.insert(w); // effectively increasing the container size by the number of elements inserted.
cout<<word.size()<<endl; // Returns the number of elements in the set container.
}
return ;
}

AC

												

3R - 单词数的更多相关文章

  1. 统计单词数(WordCount)

    1.首先新建两个文件夹: 往文件夹添加内容: 2.启动hadoop-查看是否启动成功. 3.先对nameNode进行初始化. 4.查看hadoop下面有哪些文件. 5.在hadoop目录下创建inpu ...

  2. HDU 2072 单词数

    题目链接  http://acm.hdu.edu.cn/showproblem.php?pid=2072 普通解法: /* HDU 2072 单词数 --- 字符串处理 */ #include < ...

  3. zzuli oj 1178 单词数

    Description 统计一篇文章里不同单词的总数. Input 有多组数据,每组一行,每组就是一篇小文章.每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束. Output 每 ...

  4. 翻译器DIY它———算在英文文本中的单词数,字符和行数

    咳咳.这部分应该是序列化编译器DIY的,然而,在这样做DIY第一次使用前flex 为了练练手,对于后者的理解是有帮助. 在word 我经常看到一个字计数功能,因此,它是如何实现,当然,首先想到的是要经 ...

  5. 使用jdk8 stream 统计单词数

    在我的SpringBoot2.0不容错过的新特性 WebFlux响应式编程里面,有同学问如何使用stream统计单词数.这是个好例子,也很典型,在这里补上. 下面的例子实现了从一个文本文件读取(英文) ...

  6. (set stringstream)单词数 hdu2072

    单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. 作业:WordCount--实现字符数,单词数,行数的统计

    1. Gitee 地址 https://gitee.com/fyxiaobai/wordcount 2. PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...

  8. WordCount C语言实现求文本的字符数,单词数,行数

    1.码云地址: https://gitee.com/miaomiaobobo/WordCount 2.psp表格 PSP2.1表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) P ...

  9. 题解报告:hdu 2072 单词数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...

随机推荐

  1. C# Interview Question 1

    What is C#? What's the feature of C# language? Answer:  

  2. 【ELK】之Kibana使用

    GET _search { "query": { "match_all": {} } } GET _cat/indices GET elk- GET /elk- ...

  3. 2017-07-06 eclipse在线安装SVN1.9插件

    1,百度搜索subeclipse,点击第一个: 2,官网说,文档已移动到github wiki上: 3,打开github wiki,复制最新发布版本地址: 4,在eclipse里面,打开help-&g ...

  4. 在Docker中监控Java应用程序的5个方法

    译者注:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.通常情况下,监控的主要目的在于:减少宕机 ...

  5. C++Primer第五版——习题答案详解(六)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第7章 类 练习7.1 class Sales_data { public: std:: ...

  6. LTE学习笔记(一)——背景知识

    一.标准化组织 无线通信技术的演进离不开一些标准化组织. 1.ITU(International Telecommunication Union) 国际电信联盟,主要任务是制定标准,分配无线频谱资源, ...

  7. Northwind数据库练习及参考答案

    --查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期.订单ID.客户ID和雇员ID等字段的值 Create View Orderquery as Select OrderDa ...

  8. Sqlserver 2016 R Service环境安装的各种错误(坑)解决办法

    相信很多朋友都会慕名Sqlserver 2016的R语言功能,将自己的数据库升级到Sqlserver 2016,但是当你安装完Sqlserver 2016的R语言组件之后,你会发现并不能直接使用,比如 ...

  9. python常见用法

    1.冒泡排序 a = [25,15,47,36,44,455,67,234,7,8,-47] def sortport(): for i in range(len(a)-1): for j in ra ...

  10. Python中字符串/字典/json之间的转换

    import json #定义一个字典d1,字典是无序的 d1 = { "a": None, "b": False, "c": True, ...