题目链接  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 单词数的更多相关文章

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

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

  2. HDOJ.2072 单词数(map)

    单词数 点我挑战题目 点我一起学习STL-MAP 题意分析 给出一行单词,判断这行有不同种的单词多少个,用map可以轻松解决. 代码总览 /* Title:HDOJ.2072 Author:pengw ...

  3. HDOJ 2072 单词数

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

  4. HDU 2072(字符串的流式操作,学习了)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2072 单词数 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  5. 单词数 HDU 2072 字符串输入控制

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

  6. HDU 2072(单词数)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] “就是统计一篇文章里不同单词的总数”(已经是一句话了..) [题目分析] 明显需要去重,上set,因为按行分析,又没有EOLN用 ...

  7. hdu 2072 单词数(字符串)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题意 每行输入由小写字母和空格组成,统计每行中不同的单词数. 题解 题解一 比较简洁的解法,读入 ...

  8. 统计单词数(WordCount)

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

  9. zzuli oj 1178 单词数

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

随机推荐

  1. bzoj 2440 简单莫比乌斯反演

    题目大意: 找第k个非平方数,平方数定义为一个数存在一个因子可以用某个数的平方来表示 这里首先需要考虑到二分才可以接下来做 二分去查找[1 , x]区间内非平方数的个数,后面就是简单的莫比乌斯反演了 ...

  2. [转]android Intent机制详解

    转自:http://blog.csdn.net/t12x3456/article/details/7688154 1.什么是Intent Intent是一种运行时绑定(run-time binding ...

  3. [转]Android进程与线程基本知识

    转自:http://www.cnblogs.com/hanyonglu/archive/2012/04/12/2443262.html 本文介绍Android平台中进程与线程的基本知识. 很早的时候就 ...

  4. 团队博客——Sprint计划会议1

    每日Scrum:第一天 会议时间:4.14.晚八点半 会议地点:基础教学楼一楼大厅 小组成员:郭庆樑,林彦汝,张金 认领人—使团队成员分工合作,保持团队的积极性. ID 名称(NAME) 重要性(IM ...

  5. JS 原型继承的几种方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Connection to http://www.google.com:80 refused

    使用SDK Manager更新时出现问题 Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.x ...

  7. 《View Programming Guide for iOS》之frame、bounds和center之间的关系

    The frame property contains the frame rectangle, which specifies the size and location of the view i ...

  8. java课程三课堂例子验证

    1.ClassAndObjectTest.java 验证截图: 2.ObjectEquals.java 运行截图: 3.InitializeBlockDemo.java   Java进行初始化的地方有 ...

  9. 【LeetCode OJ】Populating Next Right Pointers in Each Node II

    Problem Link: http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ OK... ...

  10. ios openURL的使用(调用系统电话、浏览器、地图、邮件等)

    Safari Any URL starting with http:// which does not point to maps.google.com or www.youtube.com is s ...