Repeated substring pattern
class Solution:
# def getNext(self, patt):
# next = [0] * len(patt)
# j = 0
# for i in range(1, len(patt)):
# while j > 0 and patt[i] != patt[j]:
# j = next[j - 1]
# if patt[i] == patt[j]:
# j += 1
# next[i] = j
# return next
def repeatedSubstringPattern(self, s: str) -> bool:
# next = self.getNext(s)
# if next[-1] != 0 and len(s) % (len(s) - next[-1]) == 0:
# return True
# return False
return s in s[1:] + s[:-1]
Repeated Substring Pattern
Given a string s, check if it can be constructed by taking a substring of it and appending multiple copies of the substring together.
Example 1:
Input: s = "abab" Output: true Explanation: It is the substring "ab" twice.
Example 2:
Input: s = "aba" Output: false
Example 3:
Input: s = "abcabcabcabc" Output: true Explanation: It is the substring "abc" four times or the substring "abcabc" twice.
Constraints:
1 <= s.length <= 104sconsists of lowercase English letters.