牛客题霸 [最长重复子串] C++题解/答案


牛客题霸 [最长重复子串] C++题解/答案

题目描述

一个重复字符串是由两个相同的字符串首尾拼接而成,例如abcabc便是长度为6的一个重复字符串,而abcba则不存在重复字符串。
给定一个字符串,请编写一个函数,返回其最长的重复字符子串。
若不存在任何重复字符子串,则返回0。

题解:

调用函数时记得传地址不然只能通过百分之六十
每次选定起点和长度,判断是否存在重复字符串

代码:

class Solution {
public:
    /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param a string字符串 待计算字符串 * @return int整型 */
    bool judge(string &a,int s,int len)
    {
        for(int i=s;i<s+len;i++){
            if(a[i]!=a[i+len])return 0;
        }
        return 1;
    }
    int solve(string a) {
        // write code here
        int len=a.size();
        for(int i=len/2;i;i--)
        {
            for(int s=0;s<=len-i*2;s++)
            {
                if(judge(a,s,i))
                    return 2*i;
            }
        }
        return 0;
    }
};


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM