Skip to content

Commit fa6c758

Browse files
authored
Update 0017.Letter-Combinations-of-a-Phone-Number.md
Update 0017.Letter-Combinations-of-a-Phone-Number 参考回溯模板,增加回溯的解法(类似于DFS)
1 parent d2dfc2d commit fa6c758

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

website/content/ChapterFour/0017.Letter-Combinations-of-a-Phone-Number.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,41 @@ func letterCombinations_(digits string) []string {
104104
return tmp
105105
}
106106

107+
// 解法三 回溯(参考回溯模板,类似DFS)
108+
var result []string
109+
var dict = map[string][]string{
110+
"2" : []string{"a","b","c"},
111+
"3" : []string{"d", "e", "f"},
112+
"4" : []string{"g", "h", "i"},
113+
"5" : []string{"j", "k", "l"},
114+
"6" : []string{"m", "n", "o"},
115+
"7" : []string{"p", "q", "r", "s"},
116+
"8" : []string{"t", "u", "v"},
117+
"9" : []string{"w", "x", "y", "z"},
118+
}
119+
120+
func letterCombinationsBT(digits string) []string {
121+
result = []string{}
122+
if digits == "" {
123+
return result
124+
}
125+
letterFunc("", digits)
126+
return result
127+
}
107128

129+
func letterFunc(res string, digits string) {
130+
if digits == "" {
131+
result = append(result, res)
132+
return
133+
}
134+
135+
k := digits[0:1]
136+
digits = digits[1:]
137+
for i := 0; i < len(dict[k]); i++ {
138+
res += dict[k][i]
139+
letterFunc(res, digits)
140+
res = res[0 : len(res)-1]
141+
}
142+
}
108143

109144
```

0 commit comments

Comments
 (0)