778字符串最大跨距(不会)
作者:
什么意思O_o
,
2024-10-29 16:41:36
,
所有人可见
,
阅读 1
#include<iostream>
using namespace std;
int main()
{
string s,s1,s2;
char c;
while(cin>>c&&c!=',') s+=c;
while(cin>>c&&c!=',') s1+=c;
while(cin>>c) s2+=c;
if(s1.size()>s.size()||s2.size()>s.size()) puts("-1");
else
{
int l=0; //表示遍历s的起点位置
while(l+s1.size()<=s.size()) //l太大会超界
{
int k=0; //表示从l开始遍历k个字符
while(k<s1.size()) //k要小于s1的长度
{
if(s[l+k]!=s1[k]) break; //如果出现不相等,就结束循环
k++; //否则就在多加一个遍历s1的字符
}
if(k==s1.size()) break; //如果当前起点经过k后与s1相等,就结束循环
l++; //否则起点再加1
}
int r=s.size()-s2.size(); //表示s2左边那个位置
while(r>=0)
{
int k=0;
while(k<s2.size())
{
if(s[r+k]!=s2[k]) break;
k++;
}
if(k==s2.size()) break;
r--;
}
l+=s1.size()-1; //表示s1最右边那个位置
if(l>r) puts("-1");
else printf("%d\n",r-l-1);
}
return 0;
}