文章目录

  • 题目描述
  • 代码 & 思路

题目描述

  • 得建立映射,其实用数组来建立也行,看起来还比较直观。

代码 & 思路

  • 理好DFS的过程就行,整体思路不难
  • 当递归字符length = 1时,递归结束
class Solution {public List<String> letterCombinations(String digits) {List<String> ans = new ArrayList<>();Map<Character, String> hashmap = new HashMap<>();hashmap.put('2', "abc");hashmap.put('3', "def");hashmap.put('4', "ghi");hashmap.put('5', "jkl");hashmap.put('6', "mno");hashmap.put('7', "pqrs");hashmap.put('8', "tuv");hashmap.put('9', "wxyz");if (digits.length() == 0) {return ans;}// 每一种可能都要遍历到,因此时间复杂度为O(3^m * 4^n)deal(hashmap, digits, new StringBuilder(), ans);return ans;}// 空间复杂度O(m+n)void deal(Map<Character, String> hashmap, String digits, StringBuilder nowString, List<String> ans) {if (digits.length() == 0) {ans.add(nowString.toString());return;}for (char ch : hashmap.get(digits.charAt(0)).toCharArray()) {deal(hashmap, digits.substring(1, digits.length()), new StringBuilder(nowString).append(ch), ans);}}
}
  • 假设m为对应3个字母的数字的数量,n为对应4个字母的数字的数量
  • 时间复杂度为O(3m3^m3m * 4n4^n4n),因为每种情况都要遍历到
  • 空间复杂度O(m + n),构造的答案的长度

【LeetCode笔记】17.电话号码的字母组合(Java、DFS)相关推荐

  1. 算法leetcode|17. 电话号码的字母组合(rust重拳出击)

    文章目录 17. 电话号码的字母组合: 样例 1: 样例 2: 样例 3: 提示: 原题传送门: 分析 题解 rust go c++ java typescript python 17. 电话号码的字 ...

  2. leetcode系列--17.电话号码的字母组合

    leetcode系列–第17题.电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数字到字母的映射如下(与电话按键相同).注意 1 ...

  3. leetcode:电话号码的字母组合--java,dfs

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

  4. leecode做题笔记17————电话号码的字母组合

    题目如下所示: 一开始的想法是通过循环遍历算法,但是每次循环的次数,由于每个数字包含的字母并不相同,所以会很麻烦.于是想到了使用递归的思想,但是由于本身递归算法使用的不够熟练,所以并没有写出成功的代码 ...

  5. 《LeetCode力扣练习》第17题 电话号码的字母组合 Java

    <LeetCode力扣练习>第17题 电话号码的字母组合 Java 一.资源 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数 ...

  6. [DFS|回溯法] leetcode 17 电话号码的字母组合

    [DFS|回溯法] leetcode 17 电话号码的字母组合 1.题目 题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 ...

  7. LeetCode算法题17:电话号码的字母组合(Java版)

    LeetCode传送门:电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: ...

  8. Leetcode算法Java全解答--17. 电话号码的字母组合

    Leetcode算法Java全解答–17. 电话号码的字母组合 文章目录 Leetcode算法Java全解答--17. 电话号码的字母组合 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用 ...

  9. 【LeetCode】【HOT】17. 电话号码的字母组合(递归)

    [LeetCode][HOT]17. 电话号码的字母组合 文章目录 [LeetCode][HOT]17. 电话号码的字母组合 package hot;import java.util.ArrayLis ...

  10. Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合

    题目:216. 组合总和 III - 力扣(LeetCode) 思路: 1.递归函数参数和返回值:首先需要两个全局变量一维path数组和二维result数组,path数组用来收集路径上的元素,resu ...

最新文章

  1. 十分钟看会laravel导入导出功能,就这么简单
  2. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...
  3. linux内核和w,Linux内核中Makefile、Kconfig和.config的关系
  4. 名词用作动词举例_日语动词修饰名词的形式
  5. 在gitlab 中使用webhook 实现php 自动部署git 代码
  6. 谈CRM产品设计的指导思想
  7. 【POJ - 2631 】Roads in the North(树的直径)
  8. 安卓 spinner下拉框 做模糊查询_用图表控件做一个简单的员工信息查询系统
  9. ICDAR 2019 文本识别冠军方案将开源!
  10. [debug] 开源项目的本地使用:使用pip安装的函数库不能被anaconda和pycharm使用+visdom使用 +路径问题
  11. 嵌入式 Linux 入门(四、Linux 下的编辑器 — 让人爱恨交加的 vi )
  12. 部署Screego浏览器实现多人共享屏幕
  13. Matlab信号处理综合工具
  14. contiki(官网简介翻译)介绍
  15. Python012--python3.7在本地及虚拟机上的安装与配置
  16. 【整理】CRISPR-Cas9用于病毒性传染病防控的最新进展
  17. IDEA改变背景颜色(护眼色)
  18. idea中整合redis中出现 Error creating bean with name ‘com.sxt.redis.RedisApplicationTests‘:
  19. 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代
  20. 论文笔记:Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering

热门文章

  1. 计算机院校人气排名,2019高校人气排行榜_最具人气大学排行榜7月榜单发布 清华大学排第一...
  2. C++中派生类隐式调用与显式调用基类的构造函数
  3. pytorch保存模型时报错***object has no attribute 'state_dict'
  4. Opencv和C++实现canny边缘检测
  5. 别以为if slse很简单——决策树
  6. SQL Server查询中特殊字符的处理方法
  7. C++学习之路 | PTA乙级—— 1009 说反话 (20分)(精简)
  8. php ie 下载 乱码,php ie下载文件名乱码怎么办
  9. C语言的数组基础,C语言基础-数组
  10. 大学计算机在线答题,大学计算机基础网上考试答题卷理论部分(含答案)