原题
https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/
思路
回溯法
复杂度
时间:O(n * 4 ** (n))
空间:O(n)
Python代码
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
map = dict(
zip("23456789", ["abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"])
)
ans = []
def backtrack(i, path):
if i == len(digits):
ans.append(path)
return
for char in map[digits[i]]:
backtrack(i+1, path + char)
if len(digits) == 0:
return ans
backtrack(0, '')
return ans
Go代码
func letterCombinations(digits string) []string {
var ans []string
if len(digits) == 0 {
return ans
}
// 创建map
m := map[byte]string{}
letters := "23456789"
coms := []string{"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}
for i, ch := range letters {
m[byte(ch)] = coms[i]
}
// 匿名函数
var backtrack func(int, string)
backtrack = func(i int, path string) {
if i == len(digits) {
ans = append(ans, path)
return
}
for _, char := range m[byte(digits[i])] {
backtrack(i+1, path+string(char))
}
}
// 回溯法
backtrack(0, "")
return ans
}

被折叠的 条评论
为什么被折叠?



