• [leetCode]17. *的字母组合


    题目

    链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number

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

    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
    在这里插入图片描述
    示例:

    输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
    说明:
    尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

    回溯

    思路:先建立数字到字母的映射,这里使用了二维数组。

    1. 确定回溯函数的参数
      digits:当前输入的数字
      index: 代表当前选择的数字下标并控制递归深度
    2. 确定回溯结束条件
      当index等于输入数字的个数是退出
    class Solution {
    
        // 数字到 字母 的映射
        private char[][] letterMap = 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> result = new ArrayList<>();
    
        // 存放结果
        private StringBuffer buffer = new StringBuffer();
    
        public List<String> letterCombinations(String digits) {
            if (digits.length() == 0) return result;
            backTracking(digits.toCharArray(), 0);
            return result;
        }
    
        /**
        * index代表当前选择的数字下标并控制递归深度
        *
        */
        private void backTracking(char[] digits, int index) {
            if (index == digits.length) {
                result.add(buffer.toString());
                return;
            }
            // 取出数字
            int digit = digits[index] - '0';
            // 确定该数字对应的字母集合
            char[] letter = letterMap[digit];
            for (int i = 0; i < letter.length; i++) {
                buffer.append(letter[i]);
                backTracking(digits, index + 1);
                buffer.deleteCharAt(buffer.length() - 1);
            }
        }
    }
    
  • 相关阅读:
    在ubuntu下安装phpmyadmin 出现404错误
    Jquery插件收藏
    PHP 时区设置
    Jquery动态进行图片缩略
    CSS设置图片垂直居中的方法
    解决CI框架的Disallowed Key Characters错误提示
    @Component默认是单例还是多例?
    ehcache的heap、off-heap、desk浅谈
    nginx负载均衡分配策略有哪些?
    HashSet的实现原理,简单易懂
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13935211.html
Copyright © 2020-2023  润新知