字符串最大跨距
这题有个小坑。str.size()
的返回值类型,导致比较错误。而且循环判断较多,也容易弄错。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str, a, b;
char c;
while(cin >> c, c!=',') str += c;
while(cin >> c, c != ',') a += c;
while(cin >> c)b += c;
if(a.size() + b.size() > str.size()) puts("-1");
else{
int l = 0;
while(l < str.size()){
int i = 0;
while(i < a.size()){
if(str[l+i] != a[i]) break;
i++;
}
if(i == a.size())break;
l ++;
}
int r = str.size() - b.size();
while(r > 0){
int i = 0;
while(i < b.size()){
if(str[r+i] != b[i])break;
i++;
}
if(i == b.size())break;
r --;
}
// a.size()的返回值并不是int类型,而是uint32_t,所以直接运算是错的。
// 因为按照加减法的规则,所有类型都会隐式转化为uint32_t(unsigned int)
if((int)(r-l-a.size()) >= 0) printf("%d", r-l-a.size());
else printf("%d", -1);
}
return 0;
}