HOT100——电话号码的字母组合(JS实现)

简介: HOT100——电话号码的字母组合(JS实现)

题目描述

image.png

解题思路

  • 本题采用的是DFS的解题思路。
  • 本题的特点在于递归中有循环。
  • DFS函数接收两个参数,一个是当前字符串,一个是指针,当指针超过了digits的长度的时候,说明可以存储并返回了,然后上一层循环继续遍历下一个字符,真的很奇妙。

解题代码

var letterCombinations = function(digits) {
    // 边界条件
    if (digits === '') return [];
    // 构建2-9对应字符的哈希表
    const m = new Map();
    m.set('2','abc');
    m.set('3','def');
    m.set('4','ghi');
    m.set('5','jkl');
    m.set('6','mno');
    m.set('7','pqrs');
    m.set('8','tuv');
    m.set('9','wxyz');
    // 定义返回的数组
    const res = [];
    // 使用DFS的思想
    function dfs(str,pointer) {
        // 递归的结束条件
        if (pointer > digits.length-1) {
            res.push(str);
            return;
        }
        let letters = m.get(digits[pointer]);
        for (let v of letters) {
            dfs(str + v,pointer + 1);
        }
        return;
    }
    dfs('',0)
    return res
};

启示

  • 学会DFS的思想。
  • 在DFS中加入循环是解决这类问题的好方法。

参考链接

leetcode-cn.com/problems/le…

相关文章
|
2月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
124 1
|
JavaScript 前端开发
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
|
JavaScript 前端开发
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
【LeetCode】JavaScript题解:电话号码的字母组合|组合总和Ⅲ
|
算法 JavaScript 前端开发
【JavaScript数据结构与算法】数组类(电话号码的字符组合)
【JavaScript数据结构与算法】数组类(电话号码的字符组合)
119 0
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
355 1
|
存储 前端开发 算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
165 0
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
|
存储 机器学习/深度学习 JavaScript
JS 你最少用几行代码实现深拷贝?
JS 你最少用几行代码实现深拷贝?
JS 你最少用几行代码实现深拷贝?
|
JavaScript 前端开发 算法
JavaScript实现一段时间之后关闭广告
简介:通过JavaScript实现在一段时间之后,广告消失。
136 0
JavaScript实现一段时间之后关闭广告
|
JavaScript 前端开发 算法
JS实现鼠标悬停变色
本文实现的是利用JS实现当鼠标悬停在表格上的时候,表格发生变色。 CSS渲染 JS逻辑 `
224 0
JS实现鼠标悬停变色
|
JavaScript 前端开发 数据安全/隐私保护
JS实现关闭图片窗口
通过事件的绑定来实现,关闭二维码的效果。
164 0
JS实现关闭图片窗口