Skip to content

Commit 102f15e

Browse files
Alagappan MaruthappanAlagappan Maruthappan
Alagappan Maruthappan
authored and
Alagappan Maruthappan
committed
palindrome pairs problem
1 parent c430d3f commit 102f15e

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

palindrome_pairs.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# https://leetcode.com/problems/palindrome-pairs/description/
2+
3+
from collections import defaultdict
4+
5+
6+
class Solution:
7+
def palindromePairs(self, words):
8+
"""
9+
:type words: List[str]
10+
:rtype: List[List[int]]
11+
"""
12+
ans = set()
13+
word_map = defaultdict(lambda: None)
14+
for i, w in enumerate(words):
15+
word_map[w] = i
16+
# print(word_map)
17+
for i in range(len(words)):
18+
l = 0
19+
r = 0
20+
word = words[i]
21+
# print("Word : " + word)
22+
while(l <= r):
23+
x = word[l:r]
24+
# print("small word : " + x)
25+
rev_x = x[::-1]
26+
x_id = word_map[rev_x]
27+
# print("rev id : " + str(x_id))
28+
if x_id != None and x_id != i:
29+
# print("Existing rev word : " + rev_x)
30+
new_word = word + rev_x
31+
if new_word == new_word[::-1]:
32+
# print("Palindrome " + new_word)
33+
ans.add((i, x_id))
34+
new_word = rev_x + word
35+
if new_word == new_word[::-1]:
36+
# print("Palindrome " + new_word)
37+
ans.add((x_id, i))
38+
if r < len(word):
39+
r += 1
40+
else:
41+
l += 1
42+
return list(ans)
43+
44+
45+
print(Solution().palindromePairs(["a", "b", "c", "ab", "ac", "aa"]))

0 commit comments

Comments
 (0)