描述
示例1
输入:
"ababc"
返回值:
4
说明:
abab为最长的重复字符子串,长度为4
示例2
输入:
"abcab"
返回值:
0
说明:
该字符串没有重复字符子串
备注:
字符串长度不超过10000,且仅由小写字母组成
主要思路:暴力枚举+判断字符串是否是重复字符串
Code:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param a string字符串 待计算字符串
* @return int整型
*/
int ff(string str)
{
int size=str.length();
int maxlen=0;
for(int i=1;i<=size/2;i++)
{
if((size%i)==0)
{
string temp=str.substr(0,i);
string temp2=temp;
int flag=0;
// cout<<temp<<"++"<<endl;
do
{
if(str.find(temp)==string::npos)
{
flag++;
break;
}
if(temp.length()==str.size())
break;
temp+=temp2;
}while(1);
if(!flag)
{
maxlen=max(maxlen,(int)temp.length());
// cout<<"maxlen="<<maxlen<<endl;
}
}
}
return maxlen;
}
int solve(string a) {
// write code here
int maxlen=0;
for(int i=0;i<a.length();i++)
{
for(int j=1;j<=a.length();j++)
{
if((i+j)>a.length())
break;
string temp=a.substr(i,j);
maxlen=max(ff(temp),maxlen);
}
}
return maxlen;
}
};