/*思路:1、从前查找字符S1最先出现的位置 2、从前查找S2最后出现的位置 3、计算两个位置的跨距*/
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char t[325], s[300] = "", s1[10] = "", s2[10] = "";//s,s1, s2字符串
cin.getline(t, 325);
int i, num = 0;
for (i = 0; t[i] != '\0'; i++) {
if (t[i] == ',') break;
else
s[num++] = t[i];
}
i++;
num = 0;
while (t[i] != ',') s1[num++] = t[i++];
i++;
num = 0;
while (t[i] != '\0')s2[num++] = t[i++];
int len = strlen(s), len1 = strlen(s1), len2 = strlen(s2), t1, t2;//s,s1,s2字符串的长度
t1 = t2 = -1;
for (i = 0; i < len; i++) {//在s中查找s1
if (s[i] == s1[0]) {
int j;
for (j = 1; j < len1; j++) {
if (s[i + j] != s1[j]) break;
}
if (j == len1) { t1 = i; break; }
}
}
if (t1 == -1) { cout << -1 << endl; return 0; }//未找到输出-1
for (i = t1 + len1; i < len; i++) {//在s中查找s2
if (s[i] == s2[0]) {
int j;
for (j = 1; j < len2; j++) {
if (s[i + j] != s2[j]) break;
}
if (j == len2) {
t2 = i;
}
}
}
if (t2 == -1) {//未找到返回-1
cout << -1 << endl; return 0;
}
cout << t2 - t1 - len1<< endl;//输出跨距
return 0;
}
poj 字符串最大跨距
最新推荐文章于 2023-02-03 21:49:09 发布