2024-03-19 02:45:09 +08:00

40 lines
821 B
Go

package main
var mapping = map[rune][]rune{
'2': {'a', 'b', 'c'}, '3': {'d', 'e', 'f'},
'4': {'g', 'h', 'i'}, '5': {'j', 'k', 'l'}, '6': {'m', 'n', 'o'},
'7': {'p', 'q', 'r', 's'}, '8': {'t', 'u', 'v'}, '9': {'w', 'x', 'y', 'z'},
}
func dfs(digits string, ret []string) []string {
if digits == "" {
return ret
}
chars := mapping[rune(digits[0])]
if len(ret) == 0 {
for _, val := range chars {
ret = append(ret, string(val))
}
} else {
retLen := len(ret)
for key, _ := range ret {
for _, val := range chars {
ret = append(ret, ret[key]+string(val))
}
}
ret = ret[retLen:]
}
ret = dfs(digits[1:], ret)
return ret
}
func letterCombinations(digits string) []string {
return dfs(digits, []string{})
}
func main() {
for _, val := range letterCombinations("26") {
println(val)
}
}