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

【LeetCode】17. 电话号码的字母组合

1 问题

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
在这里插入图片描述
示例 1:

输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]

示例 2:

输入:digits = “”
输出:[]

示例 3:

输入:digits = “2”
输出:[“a”,“b”,“c”]

2 答案

自己写的不对

class Solution:def letterCombinations(self, digits: str) -> List[str]:hashmap = {2:'abc', 3:'def', 4:'ghi', 5:'jkl', 6:'mno', 7:'pqrs', 8:'tuv', 9:'wxyz'}if digits = "" return []list1 = []res = []for s in digits:list1.append(hashmap[int(s)])for i in range(len(list1)):for j in range(i+1, len(list1)):ii = len(list1[i])jj = len(list1[j])while ii != -1: res.append(list1[i][ii]+list1[j][jj])ii -= 1

官方解1:回溯

class Solution:def letterCombinations(self, digits: str) -> List[str]:if not digits: return []phone = {'2':['a','b','c'],'3':['d','e','f'],'4':['g','h','i'],'5':['j','k','l'],'6':['m','n','o'],'7':['p','q','r','s'],'8':['t','u','v'],'9':['w','x','y','z']}def backtrack(conbination,nextdigit):if len(nextdigit) == 0:res.append(conbination)else:for letter in phone[nextdigit[0]]:backtrack(conbination + letter,nextdigit[1:])res = []backtrack('',digits)return res

官方解2:队列

class Solution:def letterCombinations(self, digits: str) -> List[str]:if not digits: return []phone = ['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']queue = ['']  for digit in digits:for _ in range(len(queue)):tmp = queue.pop(0)for letter in phone[ord(digit)-50]:queue.append(tmp + letter)return queue

感觉这两种方法都不太好理解,后面还要巩固一下

3 知识点

回溯:
当题目中出现 “所有组合” 等类似字眼时,我们第一感觉就要想到用回溯。

http://www.lryc.cn/news/192476.html

相关文章:

  • 使用 Apache Kafka 进行发布-订阅通信中的微服务
  • valarray 包含对象成员的类(cpp14章)
  • 2023双11笔记本电脑候选名单(截止2023.10.13的价格,双十一活动可能会更便宜一点)
  • Springcloud笔记(4)-客户端负载均衡Ribbon
  • MediaRecorder媒体录音机
  • 短视频如何批量添加水印
  • RT-Thread MQTT(学习)
  • Vue_Bug VUE-ELEMENT-ADMIN默认是英文模式
  • Spark中的Driver、Executor、Stage、TaskSet、DAGScheduler等介绍
  • docker的资源限制参数设置错误,导致的clickhouse性能瓶颈
  • Vue路由守卫有哪些,怎么设置,有哪些使用场景?
  • 云原生网关可观测性综合实践
  • vue-element-admin—登录页面添加自定义背景
  • 软设上午题-错题知识点一
  • 微信小程序(小程序入门)
  • 虹科分享 | 想买车无忧?AR为您带来全新体验!
  • easyUI重新渲染
  • html和css基础练习
  • Linux信号 signal()编程
  • 【LeetCode】16.最接近的三数之和
  • 嵌入式开发学习之STM32F407点亮LED及J-Link下载(二)
  • 智能呼叫中心系统的未来发展趋势:为企业开启全新服务模式
  • UE5中实现沿样条线创建网格体2-SplineMesh版本
  • 实现Element Select选择器滚动加载
  • C++ 之 Vector 和 List
  • 力扣-448.找到所有数组中消失的数字
  • 常用gdb调试命令
  • 【动手学深度学习-Pytorch版】BERT预测系列——用于预测的BERT数据集
  • 【数据结构-字符串 三】【栈的应用】字符串解码
  • Stm32_标准库_10_TIM_显示时间日期