HDU 2072.单词数【STL的优势以及字符串流的使用】【8月4】

单词数

Problem Description

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

Input

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

Output

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

Sample Input

you are my friend
#

Sample Output

4

初次看到这个题,想的是字符串直接处理。但是会麻烦,甚至时间空间都会很浪费,这个时候,STL的优势就出来了,看看代码便知道了:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<sstream>
#include<set>
using namespace std;
int main()
{
    string s;
    while(getline(cin,s)&&s!="#"){
        set<string>f;
        istringstream sin(s);
        string ss;
        while(sin>>ss) f.insert(ss);//从s中流出一个string类型到ss中
        printf("%d\n",f.size());
    }
    return 0;
}

其他做法可能用这么短的代码写出来么。

还有就是关于istringstream,c字符串流,具体可以参考:http://baike.baidu.com/linkurl=Yn7V8OHotgDUuG_SWhUbhj7CiBw8dnHpTNMmsDn0PFXhkrH_SpGtHDon6V8MArHQFHYVxx9oZJYm3730dtOkcq

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-21 22:02:31

HDU 2072.单词数【STL的优势以及字符串流的使用】【8月4】的相关文章

hdu 2072单词数

单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28671    Accepted Submission(s): 6877 Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Inp

hdu 2072 单词数(STL set写法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 思路简单,但是注意一个细节就是最后可能是空格结束的,就是这儿让我WA啦好多次呀... code: #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<set> #include<st

hdu 2072 单词数

http://acm.hdu.edu.cn/showproblem.php?pid=2072 单词数这道题感觉用c写很麻烦,用c++写就比较简单了.不多说,直接贴代码. #include<iostream> #include<string> #include<vector> #include<sstream> using namespace std; int main() { vector<string> s; string s0,s1; int

HDU 2072 单词数(map)

Problem Description http://acm.hdu.edu.cn/showproblem.php?pid=2072 lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Input 有多组数据,每组一行,每组就是一篇小文章.每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束. Output 每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总

hdu 2072 单词数,set,strtok

STL_set操作: st.begin() 返回指向第一个元素额迭代器 st.end() 返回指向末尾元素的迭代器 st.rbegin() 返回逆向迭代器,指向链表末尾 st.rend() 返回指向开头之前位置的迭代器 st.clear() 清空迭代器 st.count(key_type key) 返回某个值元素的个数 st.empty() 如果为空,返回true st.size() 返回元素的数量 st.swap() 交换两个集合变量 st.insert(val) st.insert(loc,

HDOJ——2072单词数

SSCANF用法:(继qsort,bsearch,strchr后发现的又一好使的函数) sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 例子:   1. 常见用法. char buf[512] ; sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中! printf("%s\n", buf); 结果为:12

HDU ACM 2072单词数

分析:自从有了set.sstream中的istringstream与及string之后,这种问题也变水了,记得不要忘了STL或者是字符串类及字符流等工具哦!. 注意:重复的单词算一个. #include<iostream> #include<sstream> #include<set> using namespace std; int main() { char a[10001]; string b; while(gets(a) && a[0]!='#'

杭电2072 统计单词数

http://acm.hdu.edu.cn/showproblem.php?pid=2072 用set容器来统计单词数,可以排除相同的单词. #include<iostream>#include<set>#include<string>using namespace std; int main(){ string String,str; set<string> s; int i = 0; bool flag; while(getline(cin,str) &

HDU 2072 单词数 --- stringstream+STL

/* HDU 2072 单词数 --- stringstream+STL */ #include <cstdio> #include <iostream> #include <sstream> #include <string> #include <set> using namespace std; set<string> k; int main() { string s; while (getline(cin, s) &&a