首页 > 试题广场 >

电话号码的字母组合

[编程题]电话号码的字母组合
  • 热度指数:1246 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
九键输入法中 2~9 每个数字对应了若干个的字母,请找出给定数字组合对应的全部字母组合。
1.该题你返回的组合顺序可以不唯一
2.该题你返回的字母大小写都是可以的

数据范围:数字长度 ,数字中保证不出现 0

键盘数字对应的映射如下:
示例1

输入

"55"

输出

["JJ","JK","JL","KJ","KK","KL","LJ","LK","LL"]
示例2

输入

"3"

输出

["D","E","F"]
package main
//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param num string字符串 
 * @return string字符串一维数组
*/
func phoneNumber( num string ) []string {
    n2c:=map[byte]string{
        '2':"abc",
        '3':"def",
        '4':"ghi",
        '5':"jkl",
        '6':"mno",
        '7':"pqrs",
        '8':"tuv",
        '9':"wxyz",
    }
    ans:=[]string{}
    var dfs func(string,int)
    dfs=func(s string,idx int){
        if idx==len(num){
            ans=append(ans,s)
            return
        }
        for _,ch:=range []byte(n2c[num[idx]]){
            s+=string(ch)
            dfs(s,idx+1)
            s=s[:len(s)-1]
        }
    }
    dfs("",0)
    return ans
}

发表于 2023-03-28 21:42:07 回复(0)

问题信息

难度:
1条回答 1310浏览

热门推荐

通过挑战的用户

查看代码