统计单词数(洛谷-P1308)
生活随笔
收集整理的這篇文章主要介紹了
统计单词数(洛谷-P1308)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
一般的文本編輯器都有查找單詞的功能,該功能可以快速定位特定單詞在文章中的位置,有的還能統計出特定單詞在文章中出現的次數。
現在,請你編程實現這一功能,具體要求是:給定一個單詞,請你輸出它在給定的文章中出現的次數和第一次出現的位置。注意:匹配單詞時,不區分大小寫,但要求完全匹配,即給定單詞必須與文章
中的某一獨立單詞在不區分大小寫的情況下完全相同(參見樣例1 ),如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2 )。
輸入輸出格式
輸入格式:
第1 行為一個字符串,其中只含字母,表示給定單詞;
第2 行為一個字符串,其中只可能包含字母和空格,表示給定的文章。
輸出格式:
只有一行,如果在文章中找到給定單詞則輸出兩個整數,兩個整數之間用一個空格隔開,分別是單詞在文章中出現的次數和第一次出現的位置(即在文章中第一次出現時,單詞首字母在文章中的位置,位置從 0 開始);如果單詞在文章中沒有出現,則直接輸出一個整數-1。
輸入輸出樣例
輸入樣例#1:?
To?
to be or not to be is a question?
輸出樣例#1:?
2 0
輸入樣例#2:?
to?
Did the Ottoman Empire lose its power at that time
輸出樣例#2:?
-1
源代碼
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int main() {char confirm[11],article[1000001];int i,j,total=0,flag=0,work=-1;gets(confirm);gets(article);for(i=0;confirm[i]!='\0';i++)//全部轉化為小寫字母if(confirm[i]>'A'&&confirm[i]<'Z')confirm[i]=char(confirm[i]+32);for(i=0;article[i]!='\0';i++)//全部轉化為小寫字母if(article[i]>'A'&&article[i]<'Z')article[i]=char(article[i]+32);for(i=0;article[i]!='\0';i++)//統計過程{if((i==0||article[i-1]==' ')&&(confirm[0]==article[i]))//劃分單詞{for(flag=i,j=0;confirm[j]!='\0';j++,i++)//但凡有一個字母不同,終止本輪循環if(confirm[j]!=article[i])break;if(strlen(confirm)==j&&(article[i]==' '||article[i]=='\0'))//有相同單詞,進行統計{total++;if(total==1) work=flag;}}}if(total>0) cout<<total<<" "<<work<<endl;//存在相同單詞,輸出個數else cout<<work<<endl;//不存在相同單詞,輸出-1return 0; }?
總結
以上是生活随笔為你收集整理的统计单词数(洛谷-P1308)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛C++语言:成绩等级
- 下一篇: 机器翻译(信息学奥赛一本通-T1401)