保证每个字符串的长度不超过1010
O(n²)的复杂度是可以接受的
从长到短枚举所有可能的长度,然后判断s的最后len个字符是否对应的和t的最前len个字符相同,找到的第一个满足条件的长度即为最大长度,然后输出s的最后len个字符
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1015;
char s[maxn], t[maxn];
int main() {
while(~scanf("%s%s", s, t)) {
int ls = strlen(s);
int lt = strlen(t);
int len = 0;
for(len = min(ls, lt); len >= 0; --len) {
bool flag = true;
for(int i = 0; i < len; ++i)
if(s[ls-len + i] != t[i]) {
flag = false;
break;
}
if(flag) {
break;
}
}
printf(len == 0 ? "\"NULL!\"\n" : "%s\n", &s[ls-len]);
}
return 0;
} 


京公网安备 11010502036488号