zoukankan      html  css  js  c++  java
  • [HDU2072]单词数<字符串>

     链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072

    Problem Description
    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
    Input
    有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
    Output
    每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
     
    Sample Input
     
    you are my friend
    #
     
    Sample Output
     
    4
    思路:
    一道很简单的字符串裸题,字符串的简单应用
    数据范围挺小,所以直接暴力模拟就可以了
    会用到函数
    strcmp 比较两个字符串 相同返回0
    strcpy 拷贝字符串
     
    #include<bits/stdc++.h>
    #define ll long long
    #define inf 0x3fffffff
    using namespace std;
    
    int read(){
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    
    void fre(){
         freopen("     .in","r",stdin);
         freopen("     .out","w",stdout);
    }
    
    string pas;
    char all[1005][105],now[105];
    int len,num;
    
    int main(){
        while(1){
            getline(cin,pas);
            if(pas[0]=='#')return 0;
            len=pas.size();
            pas+=' ';
            int poi=0,tot=0,can=0;
            for(int i=0;i<=len;i++){
                if(pas[i]!=' '){
                    int l=0;
                    poi=i;now[l++]=pas[poi];
                    for(i=i+1;i<=len;i++){
                        if(pas[i]==' ')break;
                        now[l++]=pas[i];
                    }
                    now[l]='';
                    for(int j=1;j<=tot;j++)
                        if(strcmp(all[j],now)==0){
                            can=1;break;
                        }
                    if(can==0){
                        strcpy(all[++tot],now);
                    }can=0;
                }
            /*    if(pas[i]==' '){
                    int l=0;
                    for(int j=poi;j<i;j++){
                        now[l++]=pas[j];
                    }poi=i+1;
                    now[l]='';
                    for(int j=1;j<=tot;j++)
                        if(strcmp(all[j],now)==0){
                            can=1;break;
                        }
                    if(can==0){
                        strcpy(all[++tot],now);
                    }can=0;
                }*/
            }
                
    
            cout<<tot<<endl;
        }
        return 0;
    }
    View Code

    之前一直wa

    后来换了一种找单词的方式就没问题了

    就是注释部分出错了

    应该是注释部分不能很好处理多空格情况,会使tot变大

    (下次一定改下次一定改)

     
     
  • 相关阅读:
    招标问什么
    其他房产
    长沙
    flume kafka
    http://www.zhihu.com/question/24301047
    38.NOW() 函数
    35.MID() 函数
    36.LEN() 函数
    34.UCASE() LCASE() 函数
    33.HAVING 子句
  • 原文地址:https://www.cnblogs.com/Danzel-Aria233/p/12261702.html
Copyright © 2011-2022 走看看