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. django 神奇的双下划线,通过外键的三种查询方式

    一,用于跨表操作 只要是object后面字符串都是用双下划线__.其它地方用点. 如:的values中的group_code__name.group_code是一个外键 def list(reques ...

  2. Maya中输出alembic文件的方法

    Maya中输出alembic文件是有现成api调用的,与maya中大部分api一样,这个功能参数的传入是非常类似mel的,本质上讲都是kwargs类型的参数,所以我们传入的参数就需要整理成类似于mel ...

  3. UEFI和GPT下硬盘克隆后的BCD引导修复

    UEFI和GPT下硬盘克隆后的BCD引导修复-Storm_Center http://www.stormcn.cn/post/1901.html 当硬盘引导换成GPT,系统启动也变成UEFI后,如果直 ...

  4. 使用 tag 文件定义自定义标签

    ----------------------------------------------------------------------- 在jsp文件中,可以引用tag和tld文件. 1.对于t ...

  5. composer在phpstorm中安装代码库

    E:\php\PHPTutorial\WWW\kmmhtt>composer install composer 安装地址 :https://getcomposer.org/download/

  6. vue路由的钩子函数和跳转

    首页可以控制导航跳转,beforeEach,afterEach等,一般用于页面title的修改.一些需要登录才能调整页面的重定向功能. beforeEach主要有3个参数to,from,next. t ...

  7. 某大型跨境电商JVM调优总结

    前提:某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner.经过618大促之后,和运维的同学讨论 ...

  8. ios7自定义返回按钮后,右滑返回功能失效解决方法

    -(void)viewWillAppear:(BOOL)animated{     [super viewWillAppear:animated];     //开启ios右滑返回     if ([ ...

  9. linux 僵尸进程查看方式

    ps -A -ostat,ppid,pid,cmd |grep -e '^[Zz]' # 结果 Z 169925 49893 [sw] <defunct> Z 169925 120690 ...

  10. CPU与内存互联的架构演变

    随着计算机中CPU核数目的增加,传统的UMA(unifonn memory access)架构由于对关键硬件(如中央内存控制器)的竞争加剧出现了性能上的瓶颈,即扩展性不强.而NUMA架构则以其良好的可 ...