题目描述
一个重复字符串是由两个相同的字符串首尾拼接而成,例如abcabc便是长度为6的一个重复字符串,而abcba则不存在重复字符串。
给定一个字符串,请编写一个函数,返回其最长的重复字符子串。
若不存在任何重复字符子串,则返回0。
示例1
输入
"ababc"
返回值
4
说明
abab为最长的重复字符子串,长度为4
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param a string字符串 待计算字符串
* @return int整型
*/
bool isEqual(string &s, int begin, int len){
for(int i=begin;i<begin+len;i++){
if(s[i]!=s[len+i])
return false;
}
return true;
}
int solve(string a) {
// write code here
int len=a.size();
int leny=len;
len/=2;
for(int i=len;i>0;i--){
for(int j=0;j<=leny-i*2;j++){
if(isEqual(a, j, i))
return 2*i;
}
}
return 0;
}
};