leetcode_0017 电话号码的字母组合

157 阅读1分钟

要求:

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

  • 示例 1
 输入:digits = "23"
 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
  • 示例 2
 输入:digits = ""
 输出:[]
  • 示例 3
 输入:digits = "2"
 输出:["a","b","c"]

详解代码

 class Solution:
     def letterCombinations(self, digits: str) -> List[str]:
         phoneMap = {"2":"abc","3":"def","4":"ghi","5":"jkl","6":"mno","7":"pqrs","8":"tuv","9":"wxyz"}
         number = str(digits)
 
         if number == "":
             return []
 
         result = [""]
         for char in number:
             values = phoneMap[char]
             new_result = []
             for prefix in result:
                 currElement = prefix
                 for value in values:
                     new_result.append(currElement + value)
             result = new_result
         return result

image.png 解题的思路:使用两层for循环,进行拼接,一层for循环用于拿到列表中的前缀,第二次循环将当前的数字对应的字母和前缀拼接到一起。