网站你懂我意思正能量免费软件,高校门户网站的建设,网站开发服务器怎么选,石大远程网页设计及网站建设答案题目描述
给定一个仅包含数字 2-9 的字符串#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下#xff08;与电话按键相同#xff09;。注意 1 不对应任何字母。 示例 1#xff1a;
输入#xff1a; digits “23” 输出返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下与电话按键相同。注意 1 不对应任何字母。 示例 1
输入 digits “23” 输出 [“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例 2
输入 digits “” 输出 []
示例 3
输入 digits “2” 输出 [“a”,“b”,“c”] 提示
0 digits.length 4 digits[i] 是范围 [2, 9] 的一个数字。
代码及注释
func letterCombinations(digits string) []string {// 定义数字对应的字母映射表m : []string{abc, def, ghi, jkl, mno, pqrs, tuv, wxyz}// 初始化结果切片和当前路径切片res, path : make([]string, 0), make([]byte, 0)// 如果输入的数字字符串为空则直接返回空结果切片if digits {return res}// 定义深度优先搜索函数var dfs func(digits string, pos int)dfs func(digits string, pos int) {// 如果当前位置已经遍历到数字字符串的末尾if pos len(digits) {// 将当前路径切片转换为字符串并添加到结果切片中tmp : string(path)res append(res, tmp)return}// 获取当前位置对应的数字并获取其对应的字母字符串digit : int(digits[pos] - 0)str : m[digit-2]// 遍历当前数字对应的字母字符串中的每个字母for i : 0; i len(str); i {// 将当前字母添加到路径切片中并继续深度优先搜索下一个位置的数字path append(path, str[i])dfs(digits, pos1)// 回溯将当前字母从路径切片中移除path path[:len(path)-1]}}// 从第一个位置开始进行深度优先搜索dfs(digits, 0)// 返回结果切片return res
}