Algorithm/LeetCode
LeetCode 17 - Letter Combinations of a Phone Number
bellringstar
2024. 10. 15. 20:28
Letter Combinations of a Phone Number - LeetCode
dfs를 통해서 가능한 문자들을 더해나간다.
번호와 문자열을 매칭해야 하는데 어차피 8개밖에 없으니 직접 넣어주는 방식을 선택하겠다.
class Solution {
static Map<Integer, String> letterMap = new HashMap<>();
static {
letterMap.put(2, "abc");
letterMap.put(3, "def");
letterMap.put(4, "ghi");
letterMap.put(5, "jkl");
letterMap.put(6, "mno");
letterMap.put(7, "pqrs");
letterMap.put(8, "tuv");
letterMap.put(9, "wxyz");
}
public List<String> letterCombinations(String digits) {
if (digits.equals("")) return List.of();
List<String> result = new ArrayList<>();
dfs(0, "", digits, result);
return result;
}
private void dfs(int depth, String curr, String digits, List<String> result) {
if (depth == digits.length()) {
result.add(curr);
return;
}
int key = digits.charAt(depth) - '0';
for (String s : letterMap.get(key).split("")) {
dfs(depth + 1, curr + s, digits, result);
}
}
}