要求:
给定一个仅包含数字 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
解题的思路:使用两层for循环,进行拼接,一层for循环用于拿到列表中的前缀,第二次循环将当前的数字对应的字母和前缀拼接到一起。