0459-repeated-substring-pattern¶
Try it on leetcode
Description¶
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.
Solution(Python)¶
class Solution:
def repeatedSubstringPattern(self, s: str) -> bool:
def computelps(s):
n = len(s)
lps = [0] *n
i = 1
len_ = 0
while i<n:
if s[i] == s[len_]:
len_+=1
lps[i] = len_
i+=1
else:
if len_ != 0:
len_ = lps[len_ - 1]
else:
lps[i] = 0
i+=1
return lps
lps = computelps(s)
n = len(s)
len_ = lps[n-1]
if len_>0 and n % (n-len_) == 0 :
return True
else:
return False