中级农民
- 积分
- 100
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2019-9-28
- 最后登录
- 1970-1-1
|
- from collections import defaultdict
- class Solution:
- def palindromePairs(self, words):
- d = defaultdict(int)
- for k,word in enumerate(words):
- d[word] = k
- res = set()
- for k,word in enumerate(words):
- for i in range(len(word)):
- if word[:i] == word[:i][::-1]: #前缀是回文,找后缀的相反
- pre = word[i:][::-1]
- if pre in d and k != d[pre]:
- res.add((d[pre],k))
- for i in range(len(word)-1,-1,-1):
- if word[i:] == word[i:][::-1]:
- back = word[:i][::-1]
- if back in d and k != d[back]:
- res.add((k,d[back]))
- if "" in d:
- for i in range(len(words)):
- if words[i][::-1] == words[i] and d[''] != i:
- res.add((i,d['']))
- res.add((d[''],i))
- return list(map(list,res))
复制代码
给个第二题的代码~ |
|