Letter Combinations of a Phone Number
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
- Time: O(n)
- Space: O(1)
public List<String> letterCombinations(String digits) {
String[] letters = {"", "", "abc", "def", "ghi", "jkl",
"mno", "pqrs", "tuv", "wxyz"};
List<String> ret = new ArrayList<>();
if (digits == null || digits.length() == 0) return ret;
helper(ret, "", letters, digits);
return ret;
}
private void helper(List<String> ret, String path,
String[] letters, String digits) {
if (digits.length() == path.length()) {
ret.add(path);
return;
}
String str = letters[digits.charAt(path.length()) - '0'];
for (int i = 0; i < str.length(); i++) {
helper(ret, path + str.charAt(i), letters, digits);
}
}