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

Difficulty: Easy


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 <= 104
  • s consists of lowercase English letters.