字符串练习-统计单词数

来源:互联网 发布:淘宝现在交易额多少了 编辑:程序博客网 时间:2024/05/24 00:14

Description

一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即单词必须与文章中某一独立残次在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

Input

输入文件共2行。

第1行为一个字符串,其中只包含字母,表示给定单词;

第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

Output

只有1行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。

Sample Input

Toto be or not to be is a questiontoDid the Ottoman Empire lose its power at that time

Sample Output

2 0-1

HINT

1<=单词长度<=10。


1<=文章长度<=10,000,000。


code:

#include <iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<math.h>
using namespace std;

int main(){
   //freopen("input.txt","r",stdin);
    string s1,s2;
    int total,f,k;
    while(getline(cin,s1)){
        getline(cin,s2);
        total=0;
        f=-1;
        int i=0,j=0;
        for(i=0;i<s2.length();i++){//while(i<s2.length())
            while(s2[i]==' ') i++;
            j=0;
            while(i<s2.length()&&j<s1.length()){
                if(s2[i]==s1[j]||fabs(s2[i]-s1[j])==32){
                    i++;//s2[i]==(char)(s1[j]+32)||s2[i]==(char)(s1[j]-32)
                    j++;
                    continue;
                }
                break;
            }
            if(j==s1.length()&&s2[i]==' ' ||j==s1.length()&&i==s2.length()){
                total++;
                if(f==-1)
                    f=i-s1.length();
            }else{
                while(i<s2.length()&&s2[i]!=' ') i++;
            }
        }
        if(total==0)
            cout<<"-1"<<endl;
        else
            cout<<total<<" "<<f<<endl;
    }
   return 0;
}



0 0