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

广安网站设计公司成都网站建设科技公司

广安网站设计公司,成都网站建设科技公司,小九自助建站,外贸互联网推广17. 电话号码的字母组合 ✅ 一、算法逻辑讲解(每一步在做什么) 步骤逐行讲解: MAPPING: 字符串与电话按键的映射,数字 2~9 映射到相应字母。 索引从 0 开始,为方便直接用数字下标查询。 le…

17. 电话号码的字母组合

✅ 一、算法逻辑讲解(每一步在做什么)

步骤逐行讲解:

  1. MAPPING

    • 字符串与电话按键的映射,数字 2~9 映射到相应字母。

    • 索引从 0 开始,为方便直接用数字下标查询。

  2. letterCombinations(self, digits: str)

    • 主函数,接收一个字符串 digits,如 "23"

  3. if n == 0: return []

    • 边界处理:空字符串直接返回空列表。

  4. path = [''] * n

    • 用于构造当前组合路径(长度固定为输入长度 n),避免字符串拼接频繁生成新对象(效率优化)。

  5. dfs(i)

    • 从第 i 位开始,依次选择可能的字符,递归构建组合。

    • 终止条件是 i == n:所有位置都选好了,把路径拼接成字符串加入 ans

  6. for c in MAPPING[int(digits[i])]

    • 遍历当前数字对应的所有字符,例如 "2""abc",每种可能都尝试一次。

  7. path[i] = c + dfs(i+1)

    • 选择当前字符后进入下一位。

    • 每次只改变当前位置 i,路径的其他部分不变。

  8. 最终返回 ans,包含所有合法组合。


⭐ 二、核心思路(算法关键点)

核心点是:DFS + 回溯,进行多叉树的全排列构造

  • 这题等价于:从多个字符集合中,选择一个字符构成全排列
    举例:输入 "23" → 组合 "ad", "ae", "af", "bd", ...

  • 每一层 DFS 对应一个数字(一个位置),每一层会有 len(MAPPING[digit]) 个分支。

  • 因为是每一位都必须选一个字符 → 无需回溯弹出,只需要在 path[i] 原地修改。

MAPPING = "", '', "abc", "def", "ghi", "jkl", "mno", "pqrs","tuv", "wxyz"class Solution:def letterCombinations(self, digits: str) -> List[str]:n = len(digits)if n == 0:return []ans = []path = [''] * ndef dfs(i: int) -> None:if i == n:ans.append(''.join(path))returnfor c in MAPPING[int(digits[i])]:path[i] = cdfs(i + 1)dfs(0)return ans

⏱ 三、时间复杂度分析

时间复杂度:O(3^m * 4^n)

  • 每个数字最多映射 4 个字母(最多的是 7 和 9)。

  • 假设有 m 个数字映射 3 个字符(如 2、3、4、5、6、8),n 个数字映射 4 个字符(如 7、9),总共组合数量为:
    3^m * 4^n

  • 对于每个组合,生成字符串的时间是 O(k),k 是输入长度。但由于是原地数组 + join,实际很快。

  • 举例:

    • 输入 "23":总组合数是 3 × 3 = 9

    • 输入 "79"4 × 4 = 16,总共16个组合

通常输入最多11位手机号,组合数也就几千个,DFS 是可以接受的。


💾 四、空间复杂度分析

空间复杂度:O(n)

  • 递归栈深度最多为 n(每个字符位最多一次递归调用)。

  • path 数组长度为 n,是构造路径用的。

输出空间:O(3^m * 4^n)(用于保存所有组合字符串)

如果不计输出结果空间,则辅助空间为 O(n)


文章转载自:

http://x9LRuEIK.Lfmwt.cn
http://zmvF2EoU.Lfmwt.cn
http://iG281UZT.Lfmwt.cn
http://l53Psp9t.Lfmwt.cn
http://BAqGZLSf.Lfmwt.cn
http://WlhBoN83.Lfmwt.cn
http://ypKKRQga.Lfmwt.cn
http://qeo4cMzx.Lfmwt.cn
http://ncAPS9IG.Lfmwt.cn
http://VwU6u30m.Lfmwt.cn
http://TOnbIhjq.Lfmwt.cn
http://wB5v6HEt.Lfmwt.cn
http://OB76Diyx.Lfmwt.cn
http://uyrPUHZL.Lfmwt.cn
http://s9HxlpRO.Lfmwt.cn
http://kILC6jeH.Lfmwt.cn
http://x3dEXApE.Lfmwt.cn
http://OsJ8cxuJ.Lfmwt.cn
http://bAenYkuk.Lfmwt.cn
http://Hd4A4rGA.Lfmwt.cn
http://75vhmA4n.Lfmwt.cn
http://bqrZNeMu.Lfmwt.cn
http://6IgjfB2H.Lfmwt.cn
http://rW5IIuJd.Lfmwt.cn
http://y2YIuDra.Lfmwt.cn
http://vnVncmeL.Lfmwt.cn
http://ncgSWjHo.Lfmwt.cn
http://ceV1f9IM.Lfmwt.cn
http://6IT9UQwM.Lfmwt.cn
http://B9B2YvNo.Lfmwt.cn
http://www.dtcms.com/wzjs/776430.html

相关文章:

  • 建站公司论坛怎么在微信公众号上做网站
  • 网站开发平台软件asp网站开发培训
  • xyz域名注册局官方网站高性能网站建设进阶
  • 企业网站优化报价无锡市规划建设局网站
  • 建筑网站招聘html5做网站好吗
  • 做网站哪家企业为什么需要流程管理
  • 哪个网站专门做邮轮旅游的网业分离后运营商命运
  • 上海红酒网站建设免费ppt课件下载网站
  • 企业网站优化方法包括展览搭建设计网站
  • a站是指哪个网站泰安正规的网站建设
  • 做牙网站手机网站页面设计要求
  • 2015做哪些网站致富建盏公司简介
  • 北京企业网站建设公司哪家好网站开发建设成本
  • 网站建设岗位说明书网络营销策划是什么
  • 做游戏的php网站有哪些前程无忧网广州网站建设类岗位
  • 郑州网站的建设品牌网站建站
  • 韩国做暖暖网站什么是电子商务专业
  • 网站设计实施方案如何百度搜到网站
  • 在源码之家下载的网站模板可以作为自己的网站吗现在公众号做电影网站的发展
  • 爬虫怎么看网站开发者模式WordPress网站主题升级
  • 湖州 网站建设网站登录不了怎么办
  • 苏州电子商务网站开发公司ui培训多少学费
  • 回收手表网站西安前端培训机构推荐
  • 中山专业门户网站制作咨询中小型企业的数据查询
  • 腾讯合作网站建设有哪些公司网站建设企业网站制作平台
  • 腾讯学生服务器做网站商丘做网站seo
  • 洛阳做网站排名站长之家网址ip查询
  • 广告网站开发背景杭州python做网站
  • 古典水墨网站环球网
  • 毕业设计音乐网站开发背景什么是网络营销的综合性工具