Skip to content

Commit 2363839

Browse files
committed
Merge pull request halfrost#61 from xxgail/patch-1
Update 0017.Letter-Combinations-of-a-Phone-Number.md
2 parents 46faa66 + 04bcb27 commit 2363839

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

leetcode/0017.Letter-Combinations-of-a-Phone-Number/17. Letter Combinations of a Phone Number.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,39 @@ func letterCombinations_(digits string) []string {
6666
}
6767
return tmp
6868
}
69+
70+
// 解法三 回溯(参考回溯模板,类似DFS)
71+
var result []string
72+
var dict = map[string][]string{
73+
"2": {"a", "b", "c"},
74+
"3": {"d", "e", "f"},
75+
"4": {"g", "h", "i"},
76+
"5": {"j", "k", "l"},
77+
"6": {"m", "n", "o"},
78+
"7": {"p", "q", "r", "s"},
79+
"8": {"t", "u", "v"},
80+
"9": {"w", "x", "y", "z"},
81+
}
82+
83+
func letterCombinationsBT(digits string) []string {
84+
result = []string{}
85+
if digits == "" {
86+
return result
87+
}
88+
letterFunc("", digits)
89+
return result
90+
}
91+
92+
func letterFunc(res string, digits string) {
93+
if digits == "" {
94+
result = append(result, res)
95+
return
96+
}
97+
k := digits[0:1]
98+
digits = digits[1:]
99+
for i := 0; i < len(dict[k]); i++ {
100+
res += dict[k][i]
101+
letterFunc(res, digits)
102+
res = res[0 : len(res)-1]
103+
}
104+
}

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)