Skip to content

Commit 637df66

Browse files
Sean PrashadSean Prashad
authored andcommitted
Add 17_Letter_Combinations_of_a_Phone_Number.java
1 parent 6047570 commit 637df66

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
private static final String[] KEYS = new String[] { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv",
3+
"wxyz" };
4+
5+
public List<String> letterCombinations(String digits) {
6+
if (digits == null || digits.length() == 0) {
7+
return Collections.emptyList();
8+
}
9+
10+
List<String> result = new ArrayList<>();
11+
dfs(digits, 0, new StringBuilder(), result);
12+
return result;
13+
}
14+
15+
private void dfs(String digits, int offset, StringBuilder sb, List<String> result) {
16+
if (offset >= digits.length()) {
17+
result.add(sb.toString());
18+
return;
19+
}
20+
21+
String letters = KEYS[digits.charAt(offset) - '0'];
22+
for (int i = 0; i < letters.length(); i++) {
23+
sb.append(letters.charAt(i));
24+
dfs(digits, offset + 1, sb, result);
25+
sb.deleteCharAt(sb.length() - 1);
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)