noip2011普及組——統計單詞數


統計單詞數

時間限制:1 s

內存限制:128MB

【問題描述】
一般的文本編輯器都有查找單詞的功能,該功能可以快速定位特定單詞在文章中的位
置,有的還能統計出特定單詞在文章中出現的次數。
現在,請你編程實現這一功能,具體要求是:給定一個單詞,請你輸出它在給定的文章
中出現的次數和第一次出現的位置。注意:匹配單詞時,不區分大小寫,但要求完全匹配,
即給定單詞必須與文章中的某一獨立單詞在不區分大小寫的情況下完全相同(參見樣例1),
如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2)。

【輸入】
輸入文件名為stat.in,2行。
第1行為一個字符串,其中只含字母,表示給定單詞;
第2行為一個字符串,其中只可能包含字母和空格,表示給定的文章。

【輸出】
輸出文件名為stat.out。
只有一行,如果在文章中找到給定單詞則輸出兩個整數,兩個整數之間用一個空格隔開,
分別是單詞在文章中出現的次數和第一次出現的位置(即在文章中第一次出現時,單詞首字
母在文章中的位置,位置從0開始);如果單詞在文章中沒有出現,則直接輸出一個整數-1。

輸入輸出樣例1

輸入:

To
to be or not to be is a question

輸出:

2 0 

【輸入輸出樣例1說明】
輸出結果表示給定的單詞To在文章中出現兩次,第一次出現的位置為0。

輸入輸出樣例2

輸入:

to
Did the Ottoman Empire lose its power at that time

輸出:

-1 

【輸入輸出樣例2說明】
表示給定的單詞to在文章中沒有出現,輸出整數-1。
【數據范圍】
1≤單詞長度≤10。
1≤文章長度≤1,000,000。

 1 #include<stdio.h>
 2 #include<string.h> 
 3 int main()
 4 {
 5     char s1[100],s2[1000];
 6     int f1;
 7     long first=-1,num=0;//first:首次出現的下標。num:總共出現的次數 
 8     char ch;
 9     int i;
10     int index=-1;//表示當前掃描文章的下標
11     
12     freopen("stat2.in","r",stdin);
13     freopen("stat2.txt","w",stdout);
14     
15     scanf("%s",s1);
16     getchar();//吸收回車符 
17     for(i=0;s1[i]!='\0';i++)
18     {
19         if(s1[i]>='A'&&s1[i]<='Z')//若是大寫字母,則變為小寫字母 
20             s1[i]=s1[i]+32;
21     }
22     
23     f1=0;//尚未開始輸入文章當中的新單詞 
24     i=0;//從文章輸入的字符保存在s2數組當中的下標
25     while((ch=getchar())!=EOF)
26     {
27         index++;
28         if(ch==' ')
29         {
30             if(f1==0) { continue; }
31             else
32             {
33                 s2[i]='\0';
34                 if(strcmp(s1,s2)==0)
35                 {
36                     if(first==-1)
37                         first=index-strlen(s2);
38                     num++;
39                 }
40                 i=0;
41                 f1=0;
42             }
43         }
44         else
45         {
46             f1=1;
47             if(ch>='A'&&ch<='Z') ch=ch+32;
48             s2[i]=ch;
49             i++;
50         }
51     }
52     if(num>0)
53         printf("%d %d\n",num,first);
54     else printf("-1\n");
55     return 0;
56 }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM