题目:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
来源:力扣(LeetCode)
链接:leetcode.cn/problems/le…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
算法:
本地考察7,8,9号键的边界条件
func letterCombinations(digits string) []string {
ans := make([]string, 0)
var dfs func (digits, str string,i int)
// distance := byte('a' - '2')
dfs = func (digits, str string,i int){
if i == len(digits) {
if str != "" {
ans = append(ans, str)
}
return
}
start := 'a' + (digits[i] - '2') * 3
interval := byte(2)
if digits[i] == '7' || digits[i] == '9' {
interval = interval + byte(1)
}
if digits[i] == '8' || digits[i] == '9' {
start = start + byte(1)
}
for j := start; j <= start + interval ; j ++ {
dfs(digits, str + string(j), i + 1)
}
}
dfs(digits, "", 0)
return ans
}
\