Skip to content

Commit acfc6e2

Browse files
authored
Update longest-chunked-palindrome-decomposition.py
1 parent 5ad760c commit acfc6e2

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

Python/longest-chunked-palindrome-decomposition.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,6 @@
33

44
# Rabin-Karp Algorithm
55
class Solution(object):
6-
def __init__(self):
7-
self.__N = 1000
8-
self.__MOD = 10**9+7
9-
self.__D = 26
10-
self.__pow = [1]*(self.__N+1)
11-
for i in xrange(1, len(self.__pow)):
12-
self.__pow[i] = self.__pow[i-1]*self.__D % self.__MOD
13-
146
def longestDecomposition(self, text):
157
"""
168
:type text: str
@@ -22,13 +14,16 @@ def compare(text, l, s1, s2):
2214
return False
2315
return True
2416

17+
MOD = 10**9+7
18+
D = 26
2519
result = 0
26-
l, left, right = 0, 0, 0
20+
l, left, right, pow_D = 0, 0, 0, 1
2721
for i in xrange(len(text)):
22+
left = (D*left + (ord(text[i])-ord('a'))) % MOD
23+
right = (pow_D*(ord(text[-1-i])-ord('a')) + right) % MOD
2824
l += 1
29-
left = (self.__pow[1]*left + (ord(text[i])-ord('a'))) % self.__MOD
30-
right = (self.__pow[l-1]*(ord(text[-1-i])-ord('a')) + right) % self.__MOD
25+
pow_D = (pow_D*D) % MOD
3126
if left == right and compare(text, l, i-l+1, len(text)-1-i):
3227
result += 1
33-
l, left, right = 0, 0, 0
28+
l, left, right, pow_D = 0, 0, 0, 1
3429
return result

0 commit comments

Comments
 (0)