AcWing 778. 字符串最大跨距
原题链接
困难
//find()返回第一次出现位置
//rfind()倒着查找,但是返回的是正向位置,如果有重复的话,返回最后一次。
//非常适合这道题
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s,ss,sss;
char c;
while(cin>>c,c!=',')s+=c;
while(cin>>c,c!=',')ss+=c;
while(cin>>c)sss+=c;
int pos1=s.find(ss);
int pos2=s.rfind(sss);
//cout<<s.size()<<endl;
//cout<<pos2<<" "<<pos1<<endl;
if(pos1==-1||pos2==-1||pos1+ss.size()>=pos2)puts("-1");
else cout<<pos2-pos1-ss.size()<<endl;//题意指的是ss的末位置和sss的初始位置之差,所以要把ss的长度减掉。
}
py版本:
s,ss,sss=input().split(",")
pos1=s.find(ss)
pos2=s.rfind(sss)
if pos1==-1 or pos2==-1 or pos1+len(ss)>=pos2:print("-1")
else:print(pos2-pos1-len(ss))