Java算法题:电话号码组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

image

示例:

输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

public static void main(String[] args) {
        List list = letterCombinations("34");
        for (String string : list) {
            System.out.println(string);
        }
    }

    public static List letterCombinations(String digits) {
        List list = new ArrayList();
        backTrack("", digits, 0, list);
        return list;
    }

    public static void backTrack(String s, String digits, int flag, List list) {
        String[] dicts = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
        if (flag >= digits.length()) {
            list.add(s);
            return;
        }

        String chars = dicts[digits.charAt(flag) - '0'];
        for (int i = 0; i < chars.length(); i++) {
            backTrack(s + chars.charAt(i), digits, flag + 1, list);
        }
    }

你可能感兴趣的:(Java算法题:电话号码组合)