给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
class Solution:
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
if not digits:
return []
digit2chars={
'2':'abc',
'3':'def',
'4':'ghi',
'5':'jkl',
'6':'mno',
'7':'pqrs',
'8':'tuv',
'9':'wxyz'
}
res = [ i for i in digit2chars[digits[0]]]
for i in digits[1:]:
res = [ m+n for m in res for n in digit2chars[i] ]
return res
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
class Solution(object):
def permute(self, nums):
if nums==[]: return [[]]
outcome=[]
self.core(nums,0,outcome)
return outcome
def core(self,nums,left,outcome):
if left==len(nums)-1:
outcome.append(nums[:])
return
else:
for i in range(left,len(nums)):
if i==left:
self.core(nums,left+1,outcome)
else:
nums[left],nums[i]=nums[i],nums[left]
self.core(nums,left+1,outcome)
nums[left],nums[i]=nums[i],nums[left]