rt,求大佬帮我看看哪里有问题。。蒟蒻这题搞了一下午了...
题目:找出字符串 a 在字符串 b 中出现了几次,若没有出现过则输出 −1。
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll lena,lenb,ans=0,d=0;
string a,b;
inline bool check(string x,string y){
for(int i=0;i<x.size();i++){
if(x[i]!=y[i])return 0;
}
return 1;
}
inline void find(){
string x="",y="";
ll now=0;
for(int i=1;i<d-1;i++){
x=x+a[i];
y=a[d-i]+y;
if(/*check(x,y)*/x==y){
now=i;
}
}
d=now;
}
int main(){
cin>>a>>b;
lena=a.size(),lenb=b.size();
a=" "+a,b=" "+b;
for(int i=1;i<=lenb;i++){
if(i+lena-d+1>lenb)break;
if(a[++d]==b[i]){
if(d==lena){
ans++;
d=0,i-=lena-1;
}
}else{
find();
}
}
if(ans){
cout<<ans<<endl;
}else{
cout<<"-1"<<endl;
}
return 0;
}