标签:统计 bre get content 情况 文本编辑器 ring ott span
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。
样例 #1: To to be or not to be is a question 样例 #2: to Did the Ottoman Empire lose its power at that time
样例 #1: 2 0 样例 #2: -1
思路:
大模拟;
来,上代码:
#include<map> #include<set> #include<queue> #include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int len_start,len_now,times_all=0,ans=0,ans_first=0x7fffffff; char start[1000001],now[1000001]; void if_ok(int now_) { if((now_==0||now[now_-1]==‘ ‘)&&(now[now_+len_start]==0||now[now_+len_start]==‘ ‘)) { bool if_add=true; for(int i=0;i<len_start;i++) { if(now[now_+i]==start[i]) continue; if_add=false; break; } if(if_add) { ans++; ans_first=min(ans_first,now_); } } } inline void char_(char &char__) { if(char__>=‘A‘&&char__<=‘Z‘) char__+=32; } int main() { gets(start); gets(now); len_start=strlen(start),len_now=strlen(now); for(int i=0;i<len_start;i++) char_(start[i]); for(int i=0;i<len_now;i++) char_(now[i]); //printf("%s\n",start); //printf("%s\n",now); for(int i=0;i<=len_now-len_start;i++) { if(now[i]==start[0]) if_ok(i); } if(ans==0) printf("-1\n"); else printf("%d %d\n",ans,ans_first); return 0; }
标签:统计 bre get content 情况 文本编辑器 ring ott span
原文地址:http://www.cnblogs.com/IUUUUUUUskyyy/p/6128086.html