LeetCode 459. 重複的子字串(C++、python)
阿新 • • 發佈:2018-12-02
給定一個非空的字串,判斷它是否可以由它的一個子串重複多次構成。給定的字串只含有小寫英文字母,並且長度不超過10000。
示例 1:
輸入: "abab" 輸出: True 解釋: 可由子字串 "ab" 重複兩次構成。
示例 2:
輸入: "aba" 輸出: False
示例 3:
輸入: "abcabcabcabc" 輸出: True 解釋: 可由子字串 "abc" 重複四次構成。 (或者子字串 "abcabc" 重複兩次構成。
C++
class Solution { public: bool repeatedSubstringPattern(string s) { int n=s.length(); int m=n/2; for(int i=m;i>=1;i--) { if(0==n%i) { int count=n/i; string tmp=s.substr(0,i); int flag=1; for(int t=1;t<count;t++) { string cc=s.substr(t*i,i); if(cc!=tmp) { flag=0; break; } } if(flag) { return true; } } } return false; } };
python
class Solution: def repeatedSubstringPattern(self, s): """ :type s: str :rtype: bool """ n=len(s) m=n//2 for i in range(1,m+1): if 0==n%i: count=n//i cc=s[0:i] flag=1 for j in range(1,count): if cc!=s[j*i:j*i+i]: flag=0 break if flag: return True return False