前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Leetcode 题目解析之 Letter Combinations of a Phone Number

Leetcode 题目解析之 Letter Combinations of a Phone Number

原创
作者头像
ruochen
发布2022-02-13 15:21:00
发布2022-02-13 15:21:00
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

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.

代码语言:javascript
代码运行次数:0
复制
    static final char[][] CHAR_MAP = { {},// 0
            {},// 1
            { 'a', 'b', 'c' },// 2
            { 'd', 'e', 'f' },// 3
            { 'g', 'h', 'i' },// 4
            { 'j', 'k', 'l' },// 5
            { 'm', 'n', 'o' },// 6
            { 'p', 'q', 'r', 's' },// 7
            { 't', 'u', 'v' },// 8
            { 'w', 'x', 'y', 'z' } // 9
    };
    List<String> result;
    char[] stack;
    public List<String> letterCombinations(String digits) {
        if (digits == null || digits.length() == 0) {
            return new ArrayList<String>();
        }
        result = new ArrayList<String>();
        stack = new char[digits.length()];
        dfs(digits.toCharArray(), 0);
        return result;
    }
    private void dfs(char[] digits, int p) {
        if (p == digits.length) {
            result.add(new String(stack));
        } else {
            int num = digits[p] - '0';
            for (char c : CHAR_MAP[num]) {
                stack[p] = c;
                dfs(digits, p + 1);
            }
        }
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档