关闭

Oulipo

230人阅读 评论(0) 收藏 举报
分类:


http://acm.hdu.edu.cn/showproblem.php?pid=1686

#include<iostream>
#include<string>
using namespace std;
int next1[100002];
int mount;
void getnext(string s)
{
 int i=0,j=-1;
 next1[0]=-1;
 while(i<s.size())
 {
  if(j==-1 || s[i]==s[j])
  {
   i++;
   j++;
   next1[i]=j;
  }
  else
   j=next1[j];
 }
}
void match(string w,string t)
{
 int i=0,j=0;
 while(i<t.size())
 {
  if(j==-1 || t[i]==w[j])
   i++,j++;
  else
   j=next1[j];
  if(j==w.size())
  {
   mount++;
   j=next1[j];
  }
 }
}
int main()
{
// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
 int t1;
 string w,t;
 cin>>t1;
 while(t1--)
 {
  mount=0;
  cin>>w>>t;
  if(t.size()<w.size())
  {
   cout<<"0"<<endl;
   continue;
  }
  getnext(w);
  match(w,t);
  cout<<mount<<endl;
 }
 return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39184次
    • 积分:1959
    • 等级:
    • 排名:千里之外
    • 原创:177篇
    • 转载:29篇
    • 译文:0篇
    • 评论:2条
    最新评论