Skip to content

Commit 8ae5f4a

Browse files
authored
Create 0017-letter-combinations-of-a-phone-number.rs
1 parent 9da072d commit 8ae5f4a

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
fn backtrack(i: usize, curr_str: String, result: &mut Vec<String>, digits: &String, d_c_map: &HashMap<char, &str>) {
5+
if curr_str.len() == digits.len() {
6+
result.push(curr_str);
7+
return;
8+
}
9+
10+
let letters = d_c_map.get(&digits.chars().nth(i).unwrap()).unwrap().to_string();
11+
for ch in letters.chars() {
12+
let mut append_str = curr_str.clone();
13+
append_str.push(ch);
14+
Self::backtrack(i + 1, append_str, result, digits, d_c_map);
15+
}
16+
}
17+
18+
pub fn letter_combinations(digits: String) -> Vec<String> {
19+
let mut result = vec![];
20+
let d_c_map = HashMap::from([
21+
('2', "abc"),
22+
('3', "def"),
23+
('4', "ghi"),
24+
('5', "jkl"),
25+
('6', "mno"),
26+
('7', "qprs"),
27+
('8', "tuv"),
28+
('9', "wxyz"),
29+
]);
30+
31+
if !digits.is_empty() {
32+
Solution::backtrack(0, "".to_string(), &mut result, &digits, &d_c_map);
33+
}
34+
35+
result
36+
}
37+
}

0 commit comments

Comments
 (0)