#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int l, r, cnt = 0, tag = 0;
string str, s, a, b;
cin >> str;
for (int i = 0; i < str.size(); i++)
{
char c = str[i];
if (c == ',')
{
if (!cnt)
{
tag = i + 1;
cnt++;
s = str.substr(0, i);
}
else
{
a = str.substr(tag, i - tag);
b = str.substr(i + 1);
}
}
}
for (int i = 0, j = s.size() - b.size(); i + a.size() - 1 < j;)
{
string a1, b1;
a1 = s.substr(i, a.size());
b1 = s.substr(j, b.size());
if (a == a1 && b == b1)
{
cout << j - i - a.size() << endl;
return 0;
}
if (a != a1) i++;
if (b != b1) j--;
}
cout << -1 << endl;
return 0;
}
反思1:
第一步除去逗号不够简洁,改善后:(参考借鉴)
string str, s, a, b;
char c;
while (cin >> c, c != ',') s += c;
while (cin >> c, c != ',') a += c;
while (cin >> c) b += c;
or
string s, a, b;
getline(cin, s, ',');
getline(cin, a, ',');
getline(cin, b);
getline()第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入,默认值为’\n’
反思2:
两步均可使用find,rfind寻找解决,
或者第一步采用以上改善后做法,第二步采用find,rfind