電話號碼的字母組合(九宮格按鍵輸入)

class Solution {
    Map<String, String> phone = new HashMap<String, String>() {{
        put("2", "abc");
        put("3", "def");
        put("4", "ghi");
        put("5", "jkl");
        put("6", "mno");
        put("7", "pqrs");
        put("8", "tuv");
        put("9", "wxyz");
    }};

    List<String> output = new ArrayList<String>();

    private void backtack(String combination, String next_digit) {
        if (next_digit.length() == 0) {
            output.add(combination);
        } else {
            // 獲取要組合的字母組合
            String letters = phone.get(next_digit.substring(0, 1));
            for (int i = 0; i < letters.length(); i++) {
                // 遞歸組合
                backtack(combination + letters.substring(i, i + 1), next_digit.substring(1));
            }
        }
    }

    public List<String> letterCombinations(String digits) {
        if (digits.length() > 0) {
            backtack("", digits);
        }
        return output;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章