TZOJ 4865 统计单词数(模拟字符串)
描述
一般的文本編輯器都有查找單詞的功能,該功能可以快速定位特定單詞在文章中的位置,有的還能統計出特定單詞在文章中出現的次數。
現在,請你編程實現這一功能,具體要求是:給定一個單詞,請你輸出它在給定的文章中出現的次數和第一次出現的位置。注意:匹配單詞時,不區分大小寫,但要求完全匹配,即給定單詞必須與文章中的某一獨立單詞在不區分大小寫的情況下完全相同,如果給定單詞僅是文章中某一單詞的一部分則不算匹配。
【數據范圍】
1 ≤ 單詞長度≤ 10。
1 ≤ 文章長度≤ 1,000,000。
【輸入輸出樣例 1 說明】
輸出結果表示給定的單詞 To 在文章中出現兩次,第一次出現的位置為0。
【輸入輸出樣例 2 說明】
表示給定的單詞 to 在文章中沒有出現,輸出整數-1。
輸入
第 1 行為一個字符串,其中只含字母,表示給定單詞;
第 2 行為一個字符串,其中只可能包含字母和空格,表示給定的文章。
輸出
只有一行,如果在文章中找到給定單詞則輸出兩個整數,兩個整數之間用一個空格隔開,
分別是單詞在文章中出現的次數和第一次出現的位置(即在文章中第一次出現時,單詞首字
母在文章中的位置,位置從0 開始);如果單詞在文章中沒有出現,則直接輸出一個整數-1。
樣例輸入
To
to be or not to be is a question
樣例輸出
2 0
提示
輸入樣例2
to
Did the Ottoman Empire lose its power at that time
輸出樣例2
-1
題意
如上
題解
模擬,詳情看代碼
代碼
1 #include<stdio.h> 2 #include<string.h> 3 using namespace std; 4 5 int main() 6 { 7 int pos=-1,ans=0,p=-1,k=0;//pos第一個位置,ans為個數,p為當前的位置,k為長度 8 char a[11],word[1000001],ch; 9 gets(a); 10 int la=strlen(a); 11 for(int i=0;a[i];i++) 12 if(a[i]>='A'&&a[i]<='Z') 13 a[i]+=32; 14 while(ch=getchar()) 15 { 16 p++; 17 if(ch>='A'&&ch<='Z') 18 ch+=32; 19 if(ch!=' '&&ch!='\n') 20 { 21 word[k++]=ch; 22 } 23 else 24 { 25 if(k==la)//長度相同 26 { 27 int f=1; 28 for(int i=0;i<k;i++) 29 { 30 if(a[i]!=word[i]) 31 { 32 f=0; 33 break; 34 } 35 } 36 if(f) 37 { 38 ans++; 39 if(pos==-1) 40 pos=p-k; 41 } 42 } 43 k=0; 44 } 45 if(ch=='\n') 46 break; 47 } 48 if(pos==-1)printf("-1\n"); 49 else printf("%d %d\n",ans,pos); 50 return 0; 51 }轉載于:https://www.cnblogs.com/taozi1115402474/p/8417452.html
總結
以上是生活随笔為你收集整理的TZOJ 4865 统计单词数(模拟字符串)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Django部分
- 下一篇: centos下性能分析工具perf的安装