Telephone Combinations
public class Solution {
public String[] combinations(int number) {
//sort number into descending order
//dfs
Map<Integer, String> keypad = new HashMap<>();
keypad.put(2, "abc");
keypad.put(3, "def");
keypad.put(4, "ghi");
keypad.put(5, "jkl");
keypad.put(6, "mno");
keypad.put(7, "pqrs");
keypad.put(8, "tuv");
keypad.put(9, "wxyz");
String temp = Integer.toString(number);
List<String> chars = new ArrayList<>();
for (int i = 0; i < temp.length(); i++){
char cur = temp.charAt(i);
if (cur != '0' && cur != '1'){
Integer key = cur - '0';
String value = keypad.get(key);
chars.add(value);
}
}
StringBuilder sb = new StringBuilder();
List<String> results = new ArrayList<>();
helper(chars, 0, sb, results);
String[] finalResults = new String[results.size()];
finalResults = results.toArray(finalResults);
return finalResults;
}
private void helper(List<String> chars, int index, StringBuilder sb, List<String> results){
if (index == chars.size() ) {
results.add(sb.toString());
return;
}
String cur = chars.get(index);
for (int i = 0; i < cur.length(); i++){
//for each letter
sb.append(cur.charAt(i));
helper(chars, index + 1, sb, results);
sb.deleteCharAt(sb.length() - 1);
}
}
}
Last updated