AcWing 778. 字符串最大跨距
原题链接
困难
作者:
黄
,
2020-07-09 16:17:10
,
所有人可见
,
阅读 910
在y总基础上改进了一下
第二段循环的范围是在第一段循环结果的基础上设定的,
第二段循环范围是总的字符串除去第一段循环过的范围,
如果第一段就没找到匹配的字符串,则已经遍历完了整个s,就不会给寻找s2的空间,也就不会进行第二段循环,即输出-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 >> s2);
if (s.size() < s1.size() + s2.size()) cout << -1;
else
{
int l = 0;
while (l + s1.size() < s.size())
{
int k = 0;
while (k < s1.size())
{
if (s[l + k] != s1[k]) break;
k ++;
}
if (k == s1.size()) break;
l ++;
}
int p = l + s1.size(), m = s.size();
while (m - s2.size() > p)
{
int k = 0;
while (k < s2.size())
{
if (s[m - k] != s2[s2.size() - k - 1]) break;
k ++;
}
if (k == s2.size())
{
cout << m - s2.size() - l - s1.size() + 1;
return 0;
}
m --;
}
cout << -1;
}
return 0;
}