P1308 統計單詞數
阿新 • • 發佈:2019-01-01
題目描述
一般的文字編輯器都有查詢單詞的功能,該功能可以快速定位特定單詞在文章中的位置,有的還能統計出特定單詞在文章中出現的次數。
現在,請你程式設計實現這一功能,具體要求是:給定一個單詞,請你輸出它在給定的文章中出現的次數和第一次出現的位置。注意:匹配單詞時,不區分大小寫,但要求完全匹配,即給定單詞必須與文章
中的某一獨立單詞在不區分大小寫的情況下完全相同(參見樣例1 ),如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2 )。
輸入輸出格式
輸入格式:
輸入檔名為stat.in ,2 行。
第1 行為一個字串,其中只含字母,表示給定單詞;
第2 行為一個字串,其中只可能包含字母和空格,表示給定的文章。
輸出格式:
輸出檔名為stat.out 。
只有一行,如果在文章中找到給定單詞則輸出兩個整數,兩個整數之間用一個空格隔開,分別是單詞在文章中出現的次數和第一次出現的位置(即在文章中第一次出現時,單詞首字母在文章中的位置,位置從 0 開始);如果單詞在文章中沒有出現,則直接輸出一個整數-1。
輸入輸出樣例
輸入樣例#1:
【輸入樣例1】
To
to be or not to be is a question
【輸入樣例2】
to
Did the Ottoman Empire lose its power at that time
輸出樣例#1:
【輸出樣例1】
2 0
【輸出樣例2】
-1
說明
資料範圍
1≤ 單詞長度≤10。
1≤ 文章長度≤1,000,000。
noip2011普及組第2題
#include <iostream> #include <fstream> using namespace std; int main() { fstream file; file.open("in.txt",ios::in); string s1,s2; getline(file,s1); getline(file,s2); int i,j; for(i=0; i<s1.length(); ++i) { if(s1[i]>='A' && s1[i]<='Z') { s1[i]=s1[i]+'a'-'A'; } } for(i=0; i<s2.length(); ++i) { if(s2[i]>='A' && s2[i]<='Z') { s2[i]=s2[i]+'a'-'A'; } } int counter=0; int first=-1; for(i=0; i<s2.length()-s1.length(); ++i) { for(j=0; j<s1.length(); ++j) { if(s2[i+j]!=s1[j]) { break; } if(j==s1.length()-1) { if(first==-1) { first=i; } counter++; } } } if(counter!=0) { cout<<counter<<" "<<first<<endl; } else { cout<<first<<endl; } return 0; }