牛客題霸 [最長重復子串] 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