求助大佬
  • 板块学术版
  • 楼主HZ_OI
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/8/18 19:09
  • 上次更新2023/11/6 20:00:23
查看原帖
求助大佬
365746
HZ_OI楼主2020/8/18 19:09

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;
}
2020/8/18 19:09
加载中...