TLE|WA;代码
2023-09-16 13:35:46
发布于:河南
2阅读
0回复
0点赞
TLE代码,正常的双层循环
#include<iostream>
#include<string>
using namespace std;
string s;char a1,a2;int k;
int main(){
cin>>k;
cin>>s>>a1>>a2;
int count=0,n=s.length();
if(s.find(a1)==-1||s.find(a2)==-1){cout<<0;return 0;}
for(int i=s.find(a1);i<n;i++)for(int j=i+k-1;j<n;j++)if(s[i]==a1&&s[j]==a2)count++;
cout<<count;
return 0;
}
WA+TLE代码,双指针
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int k;string s;char a1,a2;
int a[550005],tot=0,b[550005],len=0,sum=0,l=0,r=0,h=0;
int main()
{
cin>>k>>s>>a1>>a2;
for(int i=0;i<s.size();i++)if(s[i]==a1)a[++tot]=i;
for(int i=0;i<s.size();i++)if(s[i]==a2)b[++len]=i;
l=1,r=len;
while(l<=tot)
{
if(r<=0) r=len,l++,h=1;
if(b[r]-a[l]+1>=k) sum++;
if(b[r]-a[l]+1<k) r=len,l++,h=1;
if(h==0) r--;
else h=0;
}
cout<<sum;
return 0;
}
双指针哪里有问题?
全部评论 1
这题可能不适用双指针,会少判几个信息点,何况你这个样例都不对
2023-09-10 来自 广东
0我改了新的双指针
2023-09-16 来自 河南
0
有帮助,赞一个