題目描述
給定一個非空的字符串 s ,檢查是否可以通過由它的一個子串重復多次構成。
思路與算法
- 關鍵詞:利用字符串的重復性質;字符串的拼接技巧;逆推法
- 假設原始字符串 s 是由某個子串 sub 重復多次構成的。也就是說,s 的形式是:
那么s+s去掉頭尾后,必然還存在sub+sub+sub+…+sub(即s)的模式。s = sub + sub + sub + ... + sub
- 通過這個思路,我們可以得出結論:檢查 s + s 去掉頭尾后,如果還包含原始的 s,那么就說明 s 是由某個子串重復構成的。
代碼
```class Solution:def repeatedSubstringPattern(self, s: str) -> bool:# 通過拼接字符串 s + sdoubled_s = s + s# 檢查 s 是否出現在 doubled_s 中,但去掉頭尾# 即檢查 doubled_s[1:-1] 中是否包含 sreturn s in doubled_s[1:-1]```