一. 题目
- 题目
- 示例
输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
二. 方法一
-
解题思路
-
解题代码
# 笛卡尔积 def cartesian(self, list1, list2): list3 = [] for e1 in list1: for e2 in list2: ele = e1 + e2 list3.append(ele) return list3 def letterCombinations(self, digits: str) -> List[str]: result = [] arr = [[], [], ["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"], ["j", "k", "l"], ["m", "n", "o"], ["p", "q", "r", "s"], ["t", "u", "v"], ["w", "x", "y", "z"]] # 如果字符串为空, 直接返回空列表 if not digits: return result # 将字符串第一个数字所包含字母列表, 作为第一个参数 i = int(digits[0]) result = arr[i] # 从第二个数字开始依次和之前的result进行笛卡尔积计算 for j in range(1, len(digits)): result = self.cartesian(result, arr[int(digits[j])]) # 返回最终结果 return result
-
分析:
时间复杂度: O(n ^ 3)
空间复杂度: O(a ^ n)