题目类型 简单题
题目意思
给你一个字符数不超过100的字符串, 问出现超过两次的子串最长是多少(可重叠)
解题方法
从大到小枚举答案 再暴力找看是否能找到, 找到的话结束
参考代码 - 有疑问的地方在下方留言 看到会尽快回复的
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
typedef long long LL;
const int MAXN = 1e2 + 10;
char str[MAXN];
int main() {
while(scanf("%s", str) != EOF) {
int len = strlen(str);
int res = 0;
for( int i=len; i>=1; i-- ) {
bool ff = false;
for( int j=0; j+i+1<=len && ff == false; j++ ) {
for( int k=j+1; k+i<=len; k++ ) {
bool flag = true;
for( int h=0; h<i; h++ ) {
if(str[j+h] != str[k+h]) {
flag = false;
break;
}
}
if(flag) {
ff = true;
break;
}
}
}
if(ff) {
res = i;
break;
}
}
printf("%d\n", res);
}
return 0;
}