Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
Although the above answer is in lexicographical order, your answer could be in any order you want.
Solution: There are many ways to implement this. The one I enjoy most is by recursion.
public class Solution { public List<String> letterCombinations(String digits) { ArrayList<String> list = new ArrayList<String>(); if (digits.length() == 0) return list; String[] strs = new String[]{ "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" }; int digit = digits.charAt(0) - '0'; ArrayList<String> l = new ArrayList<String>( letterCombinations(digits.substring(1)) ); String str = strs[digit - 1]; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (l.size() == 0) { list.add(ch + ""); continue; } for (String s : l) { list.add(ch + s); } } return list; } }
No comments:
Post a Comment