LeetCode 459重复字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
示例 1:
输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成。
示例 2:
输入: "aba"
输出: False
示例 3:
输入: "abcabcabcabc"
输出: True
解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)
思想:
暴力解法:
就是一个for循环获取 子串的终止位置, 然后判断子串是否能重复构成字符串,又嵌套一个for循环,所以是O(n^2)的时间复杂度。
子串的开始位置位于第一个元素的位置,且子串的长度不能大于字符串长度的一半,大于一半肯定是不可以。
移动匹配法:
由于字符串如果是重复之后得到的,那么前半部分+后半部分=完整字符串。
所以 S(减前半部分)+S(减后半部分) = S 就说明是由于重复字符串组成。
KMP算法:
标签:子串,示例,重复,代码,随想录,Day10,字符串,构成 From: https://www.cnblogs.com/dwj-ngu/p/16824209.html