Repeated Substring Pattern
当然可以用暴力从1比到一半数组长的办法去做,但是那样代码既不简洁时间复杂度也高,这里的最优解是一种很天才的想法,首先重复的pattern最短为一个字母,最长则一个字符串肯定至少有两个pattern,也就是说,如果我们把两个输入相加再一起,再从头尾个去除一个字母,相当于我们就把头一个pattern和最后一个pattern毁掉了,但是如果此时输入真的是一个符合题意的字符串,则因为我们一个字符串至少还有一个pattern,这两个叠加起来的字符串则保证了中间段至少还能构成一次原字符串,所以我们只需要原字符串是否还存在就能判断输入是否符合要求了
class Solution(object):
def repeatedSubstringPattern(self, s):
"""
:type s: str
:rtype: bool
"""
if not s:
return True
return (s + s)[1:-1].find(s) != -1