-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathlongestPalindrome.py
More file actions
84 lines (73 loc) · 4.38 KB
/
longestPalindrome.py
File metadata and controls
84 lines (73 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
def isPalindrome(s):
return s[:] == s[::-1]
def longestPalindrome(s):
if isPalindrome(s):
return s
start = 0
window = 1
for i in range(1, len(s)):
if i-window>=0 and isPalindrome(s[i-window:i+1]):
start = i - window
window += 1
elif i-window>=1 and isPalindrome(s[i-window-1:i+1]):
start = i - window - 1
window += 2
return s[start:start+window]
def longestPalindrome2(s):
ls = len(s)
maxLength = 1
res = s[0]
for i in range(0, ls):
for j in range(0, i+1):
if s[i-j:i+j] == s[i-j:i+j][::-1] and maxLength < len(s[i-j:i+j]):
maxLength = len(s[i-j:i+j])
res = s[i-j:i+j]
# print(s[i-j:i+j])
elif s[i-j:i+j+1] == s[i-j:i+j+1][::-1] and maxLength < len(s[i-j:i+j+1]):
maxLength = len(s[i-j:i+j+1])
res = s[i-j:i+j+1]
# print(s[i-j:i+j+1])
return maxLength, res
def longestPalindrome3(s):
res = s[0]
# for odd length palindrome
for ax in range(1, len(s)):
orb = 1
leng = 1
while ax - orb >= 0 and ax + orb < len(s):
if s[ax-orb] == s[ax+orb]:
orb += 1
leng += 2
else:
break
if len(res) < leng:
si = ax-leng//2
res = s[si:si+leng]
# even length palindrome
for ax in range(0, len(s)-1):
orb = 1
leng = 0
while ax-orb+1 >= 0 and ax+orb < len(s):
if s[ax-orb+1] == s[ax+orb]:
orb += 1
leng += 2
else:
break
if len(res) < leng:
si = (ax-leng//2) + 1
res = s[si:si+leng]
return res
if __name__ == "__main__":
print(longestPalindrome("adbabad"))
print(longestPalindrome("tscvrnsnnwjzkynzxwcltutcvvhdivtmcvwdiwnbmdyfdvdiseyxyiiurpnhuuufarbwalzysetxbaziuuywugfzzmhoessycogxgujmgvnncwacziyybryxjagesgcmqdryfbofwxhikuauulaqyiztkpgmelnoudvlobdsgharsdkzzuxouezcycsafvpmrzanrixubvojyeuhbcpkuuhkxdvldhdtpkdhpiejshrqpgsoslbkfyraqbmrwiykggdlkgvbvrficmiignctsxeqslhzonlfekxexpvnblrfatvetwasewpglimeqemdgdgmemvdsrzpgacpnrbmomngjpiklqgbbalzxiikacwwzbzapqmatqmexxqhssggsyzpnvvpmzngtljlrhrjbnxgpcjuokgxcbzxqhmitcxlzfehwfiwcmwfliedljghrvrahlcoiescsbupitckjfkrfhhfvdlweeeverrwfkujjdwtcwbbbbwctwdjjukfwrreveeewldvfhhfrkfjkctipubscseioclharvrhgjldeilfwmcwifwhefzlxctimhqxzbcxgkoujcpgxnbjrhrljltgnzmpvvnpzysggsshqxxemqtamqpazbzwwcakiixzlabbgqlkipjgnmombrnpcagpzrsdvmemgdgdmeqemilgpwesawtevtafrl"))
print(longestPalindrome("forgeeksskeegfor"))
print(longestPalindrome("geeks"))
print(longestPalindrome2("adbabad"))
print(longestPalindrome2("tscvrnsnnwjzkynzxwcltutcvvhdivtmcvwdiwnbmdyfdvdiseyxyiiurpnhuuufarbwalzysetxbaziuuywugfzzmhoessycogxgujmgvnncwacziyybryxjagesgcmqdryfbofwxhikuauulaqyiztkpgmelnoudvlobdsgharsdkzzuxouezcycsafvpmrzanrixubvojyeuhbcpkuuhkxdvldhdtpkdhpiejshrqpgsoslbkfyraqbmrwiykggdlkgvbvrficmiignctsxeqslhzonlfekxexpvnblrfatvetwasewpglimeqemdgdgmemvdsrzpgacpnrbmomngjpiklqgbbalzxiikacwwzbzapqmatqmexxqhssggsyzpnvvpmzngtljlrhrjbnxgpcjuokgxcbzxqhmitcxlzfehwfiwcmwfliedljghrvrahlcoiescsbupitckjfkrfhhfvdlweeeverrwfkujjdwtcwbbbbwctwdjjukfwrreveeewldvfhhfrkfjkctipubscseioclharvrhgjldeilfwmcwifwhefzlxctimhqxzbcxgkoujcpgxnbjrhrljltgnzmpvvnpzysggsshqxxemqtamqpazbzwwcakiixzlabbgqlkipjgnmombrnpcagpzrsdvmemgdgdmeqemilgpwesawtevtafrl"))
print(longestPalindrome2("forgeeksskeegfor"))
print(longestPalindrome2("geeks"))
print(longestPalindrome3("adbabad"))
print(longestPalindrome3("tscvrnsnnwjzkynzxwcltutcvvhdivtmcvwdiwnbmdyfdvdiseyxyiiurpnhuuufarbwalzysetxbaziuuywugfzzmhoessycogxgujmgvnncwacziyybryxjagesgcmqdryfbofwxhikuauulaqyiztkpgmelnoudvlobdsgharsdkzzuxouezcycsafvpmrzanrixubvojyeuhbcpkuuhkxdvldhdtpkdhpiejshrqpgsoslbkfyraqbmrwiykggdlkgvbvrficmiignctsxeqslhzonlfekxexpvnblrfatvetwasewpglimeqemdgdgmemvdsrzpgacpnrbmomngjpiklqgbbalzxiikacwwzbzapqmatqmexxqhssggsyzpnvvpmzngtljlrhrjbnxgpcjuokgxcbzxqhmitcxlzfehwfiwcmwfliedljghrvrahlcoiescsbupitckjfkrfhhfvdlweeeverrwfkujjdwtcwbbbbwctwdjjukfwrreveeewldvfhhfrkfjkctipubscseioclharvrhgjldeilfwmcwifwhefzlxctimhqxzbcxgkoujcpgxnbjrhrljltgnzmpvvnpzysggsshqxxemqtamqpazbzwwcakiixzlabbgqlkipjgnmombrnpcagpzrsdvmemgdgdmeqemilgpwesawtevtafrl"))
print(longestPalindrome3("forgeeksskeegfor"))
print(longestPalindrome3("geeks"))
print(longestPalindrome3("a"))