AcWing 778. 字符串最大跨距
原题链接
简单
知道了遇见逗号分隔怎么读入,判断是否是子串的常用方法
#include <iostream>
#include <string>
using namespace std;
int main(){
string line;
cin>>line;
string s,a,b;
int k=0;
//读入
while(line[k]!=',')s+=line[k++];
k++;
while(line[k]!=',')a+=line[k++];
k++;
while(line[k])b+=line[k++];
k++;
int len=s.size(),len_a=a.size(),len_b=b.size();
//先判断
if(len<len_a||len<len_b)cout<<"-1";
//a从左侧枚举是否匹配,b从右侧枚举是否匹配
int l=0;
while(l+len_a<len){
int k=0;
while(k<len_a){
if(s[l+k]!=a[k])break;
k++;
}if(k==len_a)break;
l++;
}
int r=len-len_b;
while(r>=0){
int k=0;
while(k<len_b){
if(s[r+k]!=b[k])break;
k++;
}if(k==len_b)break;
r--;
}
if(l+len_a-1>=r)cout<<"-1";
else cout<<r-l-len_a;
return 0;
}