统计单词数目的三种解法

Posted orange-233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计单词数目的三种解法相关的知识,希望对你有一定的参考价值。

 1 #include<cstdio>
 2 using namespace std;
 3 int main()
 4 {
 5     char s[101];
 6     int n = 1, count = 0;
 7     gets(s);
 8     for(int i = 0; i <= 100; i++)
 9     {
10         if(s[i] == ) break;
11         if(s[i] ==  ) n = 1;
12         else
13         {
14             if(n == 1)
15             {
16                 n = 0;
17                 count++;
18             }
19         }
20     }
21     printf("%d", count);
22     return 0;
23 }

比较麻烦,emmm...但比较好理解

就是先扫一遍,判断

然后因为开头单词前面没有空格,所以要单独判断。。。

#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    char s[101];
    int n = 1, count = 0;
    gets(s + 1);
    s[0] =  ;//预处理,前面加空格。 
    for(int i=0; i<=100; i++)
    {
        if(s[i] !=   && s[i-1] ==  )
        count++;//计数 
    }
    printf("%d", count);
    return 0;
}

嗯。。。更简单了,但比较难想到

先做一下预处理,在整个字符串前面加一个空格

这样,之后就可以愉快的累加啦/手动滑稽/

#include<cstdio>
#include<cstring>
using namespace std;
char s[101];
char x[105][1005];
char tmp[105];
int main()
{
    char *p = s;
    gets(s);
    int i = 0, count = 0;
    while(++i)
    {
        while(p[0] ==  ) p+=1;
        if(sscanf(p,"%s", x[i]) == -1) break;
        sprintf(tmp, "%s", x[i]);
        p += strlen(tmp);
        count++;
    }
    printf("%d", count);
    return 0;
}

可爱的sscanf和sprintf。。。

详解请参照下一条。。。/233/

以上是关于统计单词数目的三种解法的主要内容,如果未能解决你的问题,请参考以下文章

逆序对的三种解法

算法(第4版)练习题1.1.27的三种解法

240. 搜索二维矩阵 II 的三种解法

python统计个单词数目

力扣第206号问题的三种解法

最大公约数的三种解法