zoukankan      html  css  js  c++  java
  • #2072 单词数(字符串流使用)

    单词数

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

    Total Submission(s): 35848    Accepted Submission(s): 8656


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


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


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


    Sample Input
    you are my friend
    #
     


    Sample Ouput
    4
     

    解法一:STL中的set容器配合sstream字符串流

    #include<iostream>
    #include<string>
    #include<sstream>
    #include<set>
    using namespace std;
    int main() {
        string s,w;
        while (getline(cin ,s) && s != "#") {
            //getchar();
            istringstream sin(s);
            set<string>words;
            while (sin >> w)//我们使用字符串流应该是sin
                words.insert(w);
            cout << words.size() << endl;
        }
    
        return 0;
    }
    

    解法二:C语言函数strtok切割字符串:优点在于指定任意字符为分割点

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <set>
    #include <string>
    
    using namespace std;
    
    int main(void)
    {
        char buf[1024];
        char pound[] = "#";
        char delim[] = " ";
        char *p;
    
        set<string> words;
    
        while (gets(buf) != NULL) {
            if (strcmp(buf, pound) == 0)
                break;
    
            words.clear();
    
            p = strtok(buf, delim);
            while (p) {
                words.insert(p);
                p = strtok(NULL, delim);
            }
            cout << words.size() << endl;
        }
    
        return 0;
    }
    
    //此代码来源网络
    
  • 相关阅读:
    C语言 · 最大最小值
    C语言 · 三个整数的排序
    C语言 · 简单加法
    C语言 · FJ的字符串
    C语言 · 分解质因数
    C语言 · 数的统计
    C语言 · 成绩的等级输出
    C语言 · 区间K大数查询
    shell学习目录
    数据库学习目录
  • 原文地址:https://www.cnblogs.com/RioTian/p/12777950.html
Copyright © 2011-2022 走看看