题目:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
示例:
输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成。
输入: "aba"
输出: False
输入: "abcabcabcabc"
输出: True
解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)
思路:重复字符串的长度不会超过原字符串的一半,从第二个字符开始逐个判断是否与第一个字符相等,若相等则截取其前面的所有字符为一个子串,判断字符串长度能否被子串整除,如可以再将子串复制到原字符串长度,比较两个字符串是否相等。
代码:
class Solution(object):
def repeatedSubstringPattern(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s) < 2:
return False
mid = len(s)//2
i = 1
while i <= mid:
if s[i] == s[0]:
if len(s) % i == 0:
substr = s[:i]
if s == substr*(len(s)//i):
return True
i += 1
return False