1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List;
public class LetterCombinationsofaPhoneNumber { public List<String> letterCombinations(String digits) { HashMap<Character, char[]> m = new HashMap<>(); m.put('2', new char[] {'a', 'b','c'}); m.put('3', new char[] {'d','e','f'}); m.put('4', new char[] {'g','h','i'}); m.put('5', new char[] {'j','k','l'}); m.put('6', new char[] {'m','n','o'}); m.put('7', new char[] {'p','q','r','s'}); m.put('8', new char[] {'t','u','v'}); m.put('9', new char[] {'w','x','y','z'});
List<String> ans = new LinkedList<>(); dfs(ans, digits, "", m); return ans; }
public void dfs(List<String> ans, String digits, String t, HashMap<Character, char[]> m) { if (digits.isEmpty()) { ans.add(t); } for (char i: m.get(digits.charAt(0))) { dfs(ans, digits.substring(1), t+i, m); } } public static void main(String[] args) {
} }
|