for digit in digits: current_string = dict[digit] current_res = [] for comb in res: for letter in current_string: current_res.append(comb + letter) res = current_res
return res
这个问题还可以用递归来解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
defletterCombinations(self, digits): ifnot digits: return [] dic = {"2":"abc", "3":"def", "4":"ghi", "5":"jkl", "6":"mno", "7":"pqrs", "8":"tuv", "9":"wxyz"} res = [] self.dfs(digits, dic, 0, "", res) return res defdfs(self, digits, dic, index, path, res): iflen(path) == len(digits): res.append(path) return for i inrange(index, len(digits)): for j in dic[digits[i]]: self.dfs(digits, dic, i+1, path+j, res)