classSolution(object):defpalindromePairs(self, words):"""
:type words: List[str]
:rtype: List[List[int]]
"""# 本身就是回文串单词
palidStr =[]# 翻转单词记录位置
rev_words ={}# 结果
res =[]for idx, word inenumerate(words):
rev_words[word[::-1]]= idx #利用列表推导式的形式进行逆置,同时利用赋值的方法规避掉“”的元素# 为了防止数组里有空字符串("")if word == word[::-1]:
palidStr.append(idx)print(rev_words)for idx, word inenumerate(words):if word:for i inrange(len(word)):#0--N-1
left, right = word[:i], word[i:]# print(left,right)# 是否存在在单词左边加 使得成为回文串if left == left[::-1]and right in rev_words and idx != rev_words[right]:#当前单词左边是回文,右侧在翻转单词中,且当前单词不是查找出来的右侧翻转单词print(left,right,idx,rev_words[right])
res.append([rev_words[right], idx])# 同理if right == right[::-1]and left in rev_words and idx != rev_words[left]:
res.append([idx, rev_words[left]])else:# 对于空字符串for loc in palidStr:if loc != idx:
res.append([idx, loc])#空字符串可以与任意一个回文搭配return res