HDU 2072 单词数
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2072
普通解法:
/* HDU 2072 单词数 --- 字符串处理 */
#include <cstdio> //C语言改成stdio.h即可
#include <cstring> //C语言改成string.h即可 const int maxn = ; int main()
{
char *head1, *head2;
char a[maxn];
char b[maxn][maxn];
int i, k, len, cnt1, cnt2; while (gets(a)){
//遇到字符串"#'则结束
if ('#' == a[]){
break;
} //处理末尾的连续空格
len = strlen(a);
for (i = len - ; i >= ; --i){
if (' ' == a[i]){
a[i] = ; //末尾有空格则用空字符替换
}
else
break;
}//for(i) //处理开头的连续空格
len = strlen(a);
if (len == ){ //全是空格的情况特殊处理
printf("0\n");
continue;
}
for (i = ; i < len; ++i){
if (' ' == a[i]){
a[i] = ;
}
else{
//遇到非空格
head1 = a + i; //记录新的开头
break;
}
}//for(i) len = strlen(head1);
//在字符串末尾补上一个空格以便处理最后一个单词
head1[len] = ' ';
head1[len + ] = ; head2 = head1;
cnt1 = ; //cnt1统计单词数(可能重复)
for (i = ; i <= len; ++i){
if (' ' == head1[i]){
head1[i] = ;
//当前点是空格而后一个点不是空格 则后一个点即为新的单词起点
if (' ' != head1[i + ]){
//记录上一个单词并更新单词数
strcpy(b[cnt1], head2);
++cnt1;
head2 = head1 + i + ; //更新新的单词起点
}
}
}//for(i) //处理相同的单词数
cnt2 = cnt1;
for (i = ; i < cnt1; ++i){
if (b[i][] != '#'){
for (k = i + ; k < cnt1; ++k){
if (b[k][] != '#' && strcmp(b[i], b[k]) == ){
--cnt2;
b[k][] = '#'; //已经判断是否重复则不再判断
}
}//for(k)
b[i][] = '#'; //到此 和b[i]相同的单词第一个字符已经全部设置成'#'
}//if
}//for(i)
printf("%d\n", cnt2);
}//while(gets) return ;
}
STL+stringstream解法:
/* 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) && s != "#"){
k.clear();
stringstream str(s);
string tmp;
while (str >> tmp){
k.insert(tmp);
}
cout << k.size() << endl;
}//while(get)
}
HDU 2072 单词数的更多相关文章
- 题解报告:hdu 2072 单词数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...
- HDOJ.2072 单词数(map)
单词数 点我挑战题目 点我一起学习STL-MAP 题意分析 给出一行单词,判断这行有不同种的单词多少个,用map可以轻松解决. 代码总览 /* Title:HDOJ.2072 Author:pengw ...
- HDOJ 2072 单词数
Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. ...
- HDU 2072(字符串的流式操作,学习了)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2072 单词数 Time Limit: 1000/1000 MS (Java/Others) Me ...
- 单词数 HDU 2072 字符串输入控制
单词数 HDU 2072 字符串输入控制 题意 lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个 ...
- HDU 2072(单词数)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] “就是统计一篇文章里不同单词的总数”(已经是一句话了..) [题目分析] 明显需要去重,上set,因为按行分析,又没有EOLN用 ...
- hdu 2072 单词数(字符串)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题意 每行输入由小写字母和空格组成,统计每行中不同的单词数. 题解 题解一 比较简洁的解法,读入 ...
- 统计单词数(WordCount)
1.首先新建两个文件夹: 往文件夹添加内容: 2.启动hadoop-查看是否启动成功. 3.先对nameNode进行初始化. 4.查看hadoop下面有哪些文件. 5.在hadoop目录下创建inpu ...
- zzuli oj 1178 单词数
Description 统计一篇文章里不同单词的总数. Input 有多组数据,每组一行,每组就是一篇小文章.每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束. Output 每 ...
随机推荐
- C++-类的const成员变量
当类中用到一些固定值时,希望将其定义为const成员变量,防止被修改. 但因为const成员变量因为初始化之后就不能修改,因此只能在构造函数的初始化列表中初始化 如果是数组,则没有办法在初始化列表中初 ...
- Codeforces Round #327 (Div. 2)-Wizards' Duel
题意: 在一条长度为l的走廊,两个人站在走廊的左右两端分别以p,q的速度走来,问他们相遇时离左端的距离是多少? 思路: 非常简单的暴力题,不解释. 代码如下: #include <iostrea ...
- android listview综合使用示例_结合数据库操作和listitem单击长按等事件处理
本示例说明: 1.自定义listview条目样式,自定义listview显示列数的多少,灵活与数据库中字段绑定. 2.实现对DB的增删改查,并且操作后listview自动刷新. 3.响应用户操作点击事 ...
- windows8.1安装
不小心下载了英文版的windows8.1的操作系统,要添加中文语言,结果遇到不少问题. 第一:安装中文语言包: 可以在控制面板-添加语言中添加,这个方法好像只能在线更新,那速度,不能忍.还可以下载离线 ...
- Thread启动方式一(Thread.start):源码分析
package day11; class TestDemo extends Thread{ int count = 0; /*public void add(){ while(count<100 ...
- hdu1078 bfs
//Accepted 468 KB 812 ms //bfs+dp #include <cstdio> #include <cstring> #include <iost ...
- 属性的定义以及@synthesize的使用
1.属性通常是指某些由对象封装或储存的数据.它可以是标志(如名称或颜色),也可以是与一个或多个其他对象的关系. 2.属性的基本声明使用 @property 编译器指令,后面紧跟属性的类型信息和名称.您 ...
- scp 在Ubuntu下传文件 基于ssh
scp是linux下的远程拷贝 命令: (1)将本地文件拷贝到远程:scp 文件名 用户名@计算机IP或者计算机名称:远程路径 (2)从远程将文件拷回本地:scp 用户名@计算机IP或者计算机名 ...
- PHP流程控制分支结构
1.顺序结构2.分支结构(条件结构.选择结构) (1)单路分支 //条件bool,ture或false if(条件){ 执行语句: ...
- 11、SQL基础整理(变量)
变量 定义变量:declare @hello varchar(20) 赋值:set @hello = ‘你好’ select(结果框显示)/print(消息框显示) @hello *三行必须同时 ...