LeetCode17. 电话号码的字母组合Golang版
1. 问题描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。


2. 思路
回溯模板
3. 代码
func letterCombinations(digits string) []string {
var res []string
if len(digits) == 0 {
return res
}
letterMap := []string{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}
var sb []byte
backtracking(digits, 0, letterMap, sb ,&res)
return res
}
func backtracking(digits string, index int, letterMap []string, str []byte, res *[]string) {
if index == len(digits) {
temp := make([]byte, len(str))
copy(temp, str)
*res = append(*res, string(str))
return
}
digit := digits[index] - '0'
letters := letterMap[digit]
for i := 0; i < len(letters); i++ {
str = append(str, letters[i])
backtracking(digits, index+1, letterMap, str, res)
str = str[:len(str) - 1]
}
}
这篇文章介绍了如何使用Golang实现LeetCode题目17,涉及电话号码的字母组合问题。通过递归的回溯算法,将给定的数字字符串转换为可能的字母组合。核心思路是利用字母映射表进行遍历,并在回溯过程中撤销选择。
360

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



