当前位置: 首页 > article >正文

【Leetcode 热题 100】17. 电话号码的字母组合

问题背景

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

数据约束

  • 0 ≤ d i g i t s . l e n g t h ≤ 4 0 \le digits.length \le 4 0digits.length4
  • d i g i t s [ i ] digits[i] digits[i] 是字符 2 2 2 和字符 9 9 9 之间的一个数字

解题过程

自己考虑的时候老想着用 S t r i n g B u i l d e r StringBuilder StringBuilder,实际做算法题的过程中,用字符数组来处理字符串的情况要更常见一些。
这题能够直接在对应位置上填写新字符进行覆盖,所以用选择哪个答案的思路更直接。

具体实现

class Solution {
    private static final String[] MAP = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};

    public List<String> letterCombinations(String digits) {
        int n = digits.length();
        if(n == 0) {
            return List.of();
        }
        List<String> res = new ArrayList<>();
        char[] path = new char[n];
        dfs(0, res, path, digits);
        return res;
    }

    private void dfs(int i, List<String> res, char[] path, String digits) {
        if(i == digits.length()) {
            res.add(new String(path));
            return;
        }
        for(char c : MAP[digits.charAt(i) - '0'].toCharArray()) {
            path[i] = c;
            dfs(i + 1, res, path, digits);
        }
    }
}

http://www.kler.cn/a/459621.html

相关文章:

  • 【Golang 面试题】每日 3 题(九)
  • BLIP论文笔记
  • w124中药实验管理系统
  • PySide6 SQLite3 做的 电脑组装报价系统
  • 玩转OCR | 腾讯云智能结构化OCR初体验
  • 区块链期末复习3:跨链原子交换其他加密货币
  • java—网络编程TCP和UDP
  • 探索RAG(检索增强生成):三大RAG技术的特点与应用场景
  • 分子动力学中优化算法和积分算法
  • CountDownLatch 和 CyclicBarrier
  • 【最新】西陆房产系统源码+uniapp全开源+环境教程
  • 【Logback详解】
  • 《代码随想录》Day17打卡
  • JVM 性能监控工具之命令行篇
  • 小程序配置文件 —— 13 全局配置 - window配置
  • 0041__OpenGL ES: (2) OpenGL ES 与 EGL、GLSL的关系
  • 基于特征工程(pca分析)、小波去噪以及数据增强,同时采用基于注意力机制的BiLSTM、随机森林、ARIMA模型进行序列数据预测
  • 使用Python实现量子算法优化:探索量子计算的无限可能
  • Spark Runtime Filter
  • 人才公寓系统|Java|SSM|JSP|