0
点赞
收藏
分享

微信扫一扫

NC142 最长重复子串(可以,做出来了)

青乌 2022-04-05 阅读 51
c++

在这里插入图片描述
描述
在这里插入图片描述
示例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;
    }
};
举报

相关推荐

0 条评论