电话号码
func letterCombinations(digits string) []string {
if len(digits) == 0 { //处理边界
return nil
}
var res []string
hash := map[byte][]string{
'2': []string{"a", "b", "c"},
'3': []string{"d", "e", "f"},
'4': []string{"g", "h", "i"},
'5': []string{"j", "k", "l"},
'6': []string{"m", "n", "o"},
'7': []string{"p", "q", "r", "s"},
'8': []string{"t", "u", "v"},
'9': []string{"w", "x", "y", "z"},
}
var df func (n int, digits string, r string)
df = func (n int, digits string, r string) {
if n == len(digits) {
res = append(res, r)
return
}
str := hash[digits[n]]
for _,v := range str {
// r+v 是包含了revert current status的动作
df(n+1, digits, r+v)
}
}
df(0, digits, "")
return res
}
Last updated
Was this helpful?