题目:
题解:
class Solution:def repeatedSubstringPattern(self, s: str) -> bool:def kmp(query: str, pattern: str) -> bool:n, m = len(query), len(pattern)fail = [-1] * mfor i in range(1, m):j = fail[i - 1]while j != -1 and pattern[j + 1] != pattern[i]:j = fail[j]if pattern[j + 1] == pattern[i]:fail[i] = j + 1match = -1for i in range(1, n - 1):while match != -1 and pattern[match + 1] != query[i]:match = fail[match]if pattern[match + 1] == query[i]:match += 1if match == m - 1:return Truereturn Falsereturn kmp(s + s, s)