首页 > 其他 > 详细

459. 重复的子字符串

时间:2021-07-15 17:33:26      阅读:14      评论:0      收藏:0      [点我收藏+]

459. 重复的子字符串

题目链接:459. 重复的子字符串

题目描述

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

思路分析

可以根据kmp算法的next数组的性质来做这一个题目,next[len-1]+1表示字符串s的最长公共前后缀长度,len-(next[len-1]+1)表示重复的子串长度,如果能被len整除,那么就是。

代码实现

class Solution {
public:
    bool repeatedSubstringPattern(string s) {
        int len=s.size();
        vector<int>next(len,-1);
        for(int i=1,j=-1;i<len;i++)
        {
            while(j>-1&&s[i]!=s[j+1])j=next[j];
            if(s[i]==s[j+1])j++;
            next[i]=j;
        }
        if(next[len-1]!=-1&&len%(len-next[len-1]-1)==0)
            return true;
        return false;
        
    }
};

459. 重复的子字符串

原文:https://www.cnblogs.com/zengfanlu/p/15015894.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!