diff --git a/solution/017. Letter Combinations of a Phone Number/Solution.java b/solution/017. Letter Combinations of a Phone Number/Solution.java new file mode 100644 index 0000000000000..6b4c9458dc62f --- /dev/null +++ b/solution/017. Letter Combinations of a Phone Number/Solution.java @@ -0,0 +1,30 @@ +class Solution { + public List letterCombinations(String digits) { + char[] cs = digits.toCharArray(); + List result = new ArrayList<>(); + for (char a : cs) { + char[] charArray; + switch (a) { + case '2': charArray = new char[]{'a','b','c'}; break; + case '3': charArray = new char[]{'d','e','f'}; break; + case '4': charArray = new char[]{'g','h','i'}; break; + case '5': charArray = new char[]{'j','k','l'}; break; + case '6': charArray = new char[]{'m','n','o'}; break; + case '7': charArray = new char[]{'p','q','r','s'}; break; + case '8': charArray = new char[]{'t','u','v'}; break; + case '9': charArray = new char[]{'w','x','y','z'}; break; + default: return null; + } + if (result.size() == 0) { + for (char aCharArray : charArray) result.add(String.valueOf(aCharArray)); + } else { + List cache = new ArrayList<>(); + for (String string : result) { + for (char aCharArray : charArray) cache.add(string + aCharArray); + } + result = cache; + } + } + return result; + } +}