leetcode459: repeated substring pattern 2. Analysis 3. Solution(s)

Link

Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only and its length will not exceed 10000.

  • Example 1:
1
2
3
4
5
Input: "abab"
Output: True
Explanation: It's the substring "ab" twice.
  • Example 2:
1
2
3
Input: "aba"
Output: False
  • Example 3:
1
2
3
4
5
Input: "abcabcabcabc"
Output: True
Explanation: It's the substring "abc" four times. (And the substring "abcabc" twice.)

2. Analysis

3. Solution(s)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class (object):
def repeatedSubstringPattern(self, str1):
"""
:type str: str1
:rtype: bool
"""
tmp = None
if str1 == "": return False
for i in xrange(len(str1)/2):
tmp = str1[:i+1]
j = 0
while j < len(str1)-(i+1):
try:
if tmp != str1[j:j+i+1]:
break
else:
j += i+1
except:
break
if j == len(str1)-(i+1) and tmp == str1[len(str1)-len(tmp):]:
return True
return False