zoukankan      html  css  js  c++  java
  • 算法提高:不同单词个数统计

    问题描述
      编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。
      说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都是小写字符;(4)句子长度不超过100个字符。
      输入格式:输入只有一行,即一个英文句子。
      输出格式:输出只有一行,是一个整数,表示句子中不同单词的个数。
    输入输出样例
    样例输入
    one little two little three little boys
    样例输出
    5
    思路:一点不难,就是 用一个小数字记录每个单词,然后再进行比较这个单词是否出现过,所以c语言中的字符串操作函数就可以排上用场了。
    #include<stdio.h>
    #include<stdlib.h>
    
    int main(void)
    {
        char s[100][30];
        char a[100];
        int i;
        char temp[30];
        int j = 0,cnt=0;
        int n;
    
        gets(a);
        for (i = 0; a[i]; i++)
        {
            if (a[i] != ' ')
            {
                temp[j++] = a[i];
            }
    
            if (a[i] != ' ' && (a[i + 1] == ' ' || a[i + 1] == ''))
            {
                temp[j] = '';
                j = 0;
    
                if (cnt == 0) //如果是第一个单词
                {
                    strcpy(s[cnt++], temp);
                }
                else
                {
                    for (n = 0; n < cnt; n++)
                    {
                        if (strcmp(s[n], temp) == 0)
                            break;
                    }
    
                    if (n == cnt) //说明单词没有重复单词
                        strcpy(s[cnt++], temp);
                }
            }
    
        }
    
        printf("%d", cnt);
        return 0;
    }
  • 相关阅读:
    火狐浏览器标签之间切换的快捷键
    LeetCode 69. x 的平方根
    LeetCode 51. N皇后
    win 10 自带 Ubuntu 系统的文件位置
    LeetCode 122. 买卖股票的最佳时机 II
    LeetCode 169. 求众数
    LeetCode 50. Pow(x, n)
    LeetCode 236. 二叉树的最近公共祖先
    LeetCode 235. 二叉搜索树的最近公共祖先
    LeetCode 98. 验证二叉搜索树
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12518497.html
Copyright © 2011-2022 走看看