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

学习记录:js算法(八十九):电话号码的字母组合

文章目录

    • 电话号码的字母组合
      • 思路一

电话号码的字母组合

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

示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:
输入:digits = ""
输出:[]

示例 3:
输入:digits = "2"
输出:["a","b","c"]

思路一

function letterCombinations(digits) {
    if (digits.length === 0) return [];
    const res = [];
    const phoneMap = {
        '2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl',
        '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'
    };
    const path = [];

    const backtrack = (index) => {
        if (path.length === digits.length) {
            res.push(path.join(''));
            return;
        }
        const letters = phoneMap[digits[index]];
        for (let i = 0; i < letters.length; i++) {
            path.push(letters[i]);
            backtrack(index + 1);
            path.pop();
        }
    };

    backtrack(0);
    return res;
}

讲解

  1. 初始化:创建一个空的结果数组res和一个空的路径数组path。定义一个映射phoneMap,将数字映射到对应的字母。
  2. 递归函数:定义一个递归函数backtrack,它接受以下参数:
    ○ 当前路径path,
    ○ 剩余数字的字符串digits,
    ○ 当前处理的数字的索引index。
  3. 基本结束条件:如果index等于digits的长度,意味着我们已经生成了一个完整的组合,此时将当前路径path拷贝一份加入结果数组res,然后返回。
  4. 回溯过程:对于从index开始的每一个字母,执行以下操作:
    ○ 获取当前数字对应的字母列表。
    ○ 对于列表中的每一个字母,将其添加到路径path中。
    ○ 调用backtrack函数,传递更新后的path和下一个数字的索引。
    ○ 回溯,即将当前字母从路径path中移除。
  5. 开始回溯:调用backtrack函数,传入初始的path、digits和开始位置0。
  6. 返回结果:最后返回结果数组res。

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

相关文章:

  • 标准C++ 字符串
  • 车-路-站-网”信息耦合的汽车有序充电
  • MySQL重难点(一)索引
  • 什么是数字图像?
  • 浅谈C#之内存管理
  • Web安全之SQL注入---基础
  • # 设置ubuntu为中文后,如何保留用户家目录等文件夹名为英文
  • 基于FE1.1(非FE1.1S)的HUB拓展板子 2024/11/9
  • 【力扣热题100】[Java版] 刷题笔记-160. 相交链表
  • Linux:调试器 gdb/cgdb 的使用
  • Spark的容错机制
  • 数据编排与ETL有什么关系?
  • Springboot中的单元测试该如何进行?
  • 在职场,多少人输在不懂人情世故上!这12条人情世故,你懂几条?
  • C#中日期和时间的处理
  • 15分钟学 Go 第 45 天 : 使用Docker容器
  • Leetcode 778 Swim in a Rising water
  • (十三)JavaWeb后端开发——MySQL2
  • Spring的异步详解(@Async)
  • arkUI:层叠布局(Stack)
  • 测试概念以及测试bug
  • cannot locate symbol _ZTVNSt6__ndk119basic_ostringstreamIcNS_
  • 自动化细胞核分割与特征分析
  • 如何利用动态住宅IP高效抓取亚马逊数据并避开封禁
  • react的创建与书写
  • node.js安装配置(Windows)