17
思路很简单:
1.就是先判断是否为零输入,如果是就返回空列表。
2.然后写好对应的数字对应的字符串。
3.我们先把第一个数字的每一个字母进行保存成一个列表。然后将这个字母表和第二个数字的每一个字母进行各个匹配成一个新的列表。然后将这个字母表和第三个数字的每一个字母进行各个匹配成一个新的列表,以此类推得到最终的结果。
例如输入“23”,然后先是得到[‘a’, ‘b’, ‘c’],然后根据里面的元素的个数来循环分别添加[ad ,ae,af]、[bd,be,bf]、[cd,ce,cf]。来得到最好的结果
class Solution:
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
if digits == "":
return []
nums_to_letters = {
2: "abc",
3: "def",
4: "ghi",
5: "jkl",
6: "mno",
7: "pqrs",
8: "tuv",
9: "wxyz"
}
combs = [""]
for digit in digits:
new_combs = []
for comb in combs:
for letter in nums_to_letters[int(digit)]:
new_combs.append(comb + letter)
combs = new_combs
return combs
46
这道题的思路和上道题是异曲同工之妙。只是换了要添加的对应的数据而已。
class Solution:
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
perms = [[]]
for n in nums:
new_perms = []
for perm in perms:
for i in range(len(perm)+1):
new_perms.append(perm[:i] + [n] + perm[i:]) ###insert n
perms = new_perms
return perms