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);
    }
}

results matching ""

    No results matching ""