题意:给出数字串,输出对应的字母串组合,数字与字母的对应关系为手机上的
思路:使用递归,使用字符数组来存储递归选取时的字母,当到达数字串长度时,将字符数组转换为字符串
注意:数字串为空串时,输出为空
代码如下:
func letterCombinations(digits string) []string {
var dict = map[byte]string{'2':"abc", '3':"def", '4':"ghi", '5':"jkl", '6':"mno", '7':"pqrs", '8':"tuv", '9':"wxyz"}
digitsLen := len(digits)
chars := make([]byte, digitsLen)
ans := make([]string, 0)
if 0 == digitsLen {
return ans
}
genLetter(digits, 0, dict, chars, &ans)
return ans
}
func genLetter(digits string, start int, m map[byte]string, chars []byte, ans *[]string) {
digitsLen := len(digits)
if start == digitsLen {
s := string(chars)
*ans = append(*ans, s)
return
}
var ch = digits[start]
var tmp = m[ch]
tmpLen := len(tmp)
for i := 0; i < tmpLen; i++ {
chars[start] = tmp[i]
genLetter(digits, start + 1, m, chars, ans)
}
}