LeetCode 精选 TOP 面试题(Java 实现)—— 电话号码的字母组合

一、题目描述

1.1 题目
  • 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

在这里插入图片描述

  • 示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
  • 说明:
    尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
1.2 知识点
  • 回溯算法
1.3 题目链接

二、解题思路

2.1 自研思路

  典型的回溯算法,比较简单不做赘述。

三、实现代码

3.1 自研实现
class Solution {

    private char[][] fx = new char[][]{
            {'a','b','c'},
            {'d','e','f'},
            {'g','h','i'},
            {'j','k','l'},
            {'m','n','o'},
            {'p','q','r','s'},
            {'t','u','v'},
            {'w','x','y','z'}
    };

    private List<String> res = new ArrayList<>();

    public List<String> letterCombinations(String digits) {

        if(digits.length() == 0) return res;
        backtrack(digits, "");
        return res;
    }

    public void backtrack(String str, String resStr) {

        if(str.length() == 0){
            res.add(resStr);
            return;
        }

        char[] ch = fx[str.charAt(0)-50];
        for(int i = 0; i < ch.length; i++){
            backtrack(str.substring(1), resStr+ch[i]);
        }

    }
}
发布了244 篇原创文章 · 获赞 32 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_40697071/article/details/103930320