• 单词统计


    链接:https://ac.nowcoder.com/acm/problem/20443
    来源:牛客网

    题目描述

    某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。

    输入描述:

    第一个一个整数N,表示有多少个单词,接下来N行每行一个单词。每个单词由小写字母组成,N ≤ 200,单词长度不超过10^6

    输出描述:

    输出N个整数,第i行的数字表示第i个单词在文章中出现了多少次。
    示例1

    输入

     

    输出

     
    我对字符串还是不怎么熟悉,一开始用char折腾半天,后面看到大佬都用的string处理,发现确实好多了。基本上是一个字符匹配算法。
    #include<bits/stdc++.h>
    using namespace std;    
    string s[205];
    int axs(int x,int y)
    {
        string a=s[x],b=s[y];
        int i,j,count,s=0;
        int len1=a.length(),len2=b.length();//a,b串长     
        if(len1>len2)//如果a比b长直接不需要比较了,将没有配对的 
        return 0;
        for(i=0;i<=len2-len1;i++)//len2-len1表示有几次配对机会-1 
        {
            if(a[0]==b[i])//在b中找到与a的首字母匹配的对象再继续进行比较下去 
            {
                count=0;//统计匹配成功次数 
                for(j=0;j<len1;j++)
                {
                    if(a[j]==b[i+j])//暴力匹配 
                        {
                            count++;
                        }
                }
                    if(count==len1)//将a检测完后表示匹配一次 
                {
                    s++;
                }
            }
        }
        return s;
    }
    int main()
    {
        int sum;
        int n;
        cin>>n;
        int i,j;
        for(i=0;i<n;i++)//输入N行数据 
        {
            cin>>s[i];
         }
        for(i=0;i<n;i++)//用第i个分别与第J个进行比较 
        {
            sum=0;
            for(j=0;j<n;j++)
            {
                sum+=axs(i,j);
            }
             cout<<sum<<endl;//当第i个与最后一个j比较完后输出结果 
        }
         
    }
  • 相关阅读:
    [NOIP模拟赛][贪心]奶牛晒衣服.
    BZOJ3750: [POI2015]Piecz
    BZOJ2348 [Baltic 2011]Plagiarism
    高精度乘法【高乘高
    codevs 1215 迷宫
    变量交换
    a+b问题与圆柱体表面积的计算
    算数表达式的练习
    [bzoj1070][SCOI2007]修车[ 网络流]
    [bzoj2502]清理雪道[上下界网络流]
  • 原文地址:https://www.cnblogs.com/Truedragon/p/12316705.html
Copyright © 2020-2023  润新知