leetcode336. Palindrome Pairs
2016-07-07 16:22
495 查看
Given a list of unique words. Find all pairs of distinct indices (i, j) in the given list, so that the concatenation of the two words, i.e. words[i] + words[j] is a palindrome.
Example 1:
Given words = [“bat”, “tab”, “cat”]
Return [[0, 1], [1, 0]]
The palindromes are [“battab”, “tabbat”]
Example 2:
Given words = [“abcd”, “dcba”, “lls”, “s”, “sssll”]
Return [[0, 1], [1, 0], [3, 2], [2, 4]]
The palindromes are [“dcbaabcd”, “abcddcba”, “slls”, “llssssll”]
思路:
x+y是Palindrome Pairs的条件是:
y+xleft+xright
或者 xleft+xright+y
y==xright and xleft 回文
y==xleft and xright回文
用hash table 来求解不会TLE
注意如果x和y都是回文,取x+y
Example 1:
Given words = [“bat”, “tab”, “cat”]
Return [[0, 1], [1, 0]]
The palindromes are [“battab”, “tabbat”]
Example 2:
Given words = [“abcd”, “dcba”, “lls”, “s”, “sssll”]
Return [[0, 1], [1, 0], [3, 2], [2, 4]]
The palindromes are [“dcbaabcd”, “abcddcba”, “slls”, “llssssll”]
思路:
x+y是Palindrome Pairs的条件是:
y+xleft+xright
或者 xleft+xright+y
y==xright and xleft 回文
y==xleft and xright回文
用hash table 来求解不会TLE
注意如果x和y都是回文,取x+y
class Solution(object): def palindromePairs(self, words): dic={} for i in range(len(words)): dic[words[i]]=i ret=[] for i in range(len(words)): x=words[i] for j in range(len(words[i])+1): left=x[:j] right=x[j:] flag=dic.get(left[::-1]) if flag!=None and right==right[::-1] and flag!=i: ret.append([i,flag]) flag=dic.get(right[::-1]) if flag!=None and left==left[::-1] and flag!=i and j!=0: ret.append([flag,i]) return ret
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解