LeetCode - 电话号码的字母组合

93 阅读2分钟

LeetCode - 电话号码的字母组合

问题陈述

给出一个包含2-9数字的字符串,返回该数字可能代表的所有可能的字母组合。以任何顺序返回答案。

下面给出了一个数字与字母的映射(就像电话按钮上的一样)。请注意,1并没有映射到任何字母。

问题陈述摘自:https://leetcode.com/problems/letter-combinations-of-a-phone-number

例子1:

Input: digits = "23"

例2:

Input: digits = ""

例3:

Input: digits = "2"

限制条件。

- 0 <= digits.length <= 4

解释

这个问题可以用迭代和递归两种方法来解决。我们将在博客中讨论递归的解决方案。

递归法

每个数字(除了0和1)可以代表3到4个不同的字母。为了存储这些数据,我们可以使用一个哈希图,其中的键是数字,其值是相应的字符串。

递归函数将尝试所有的字母,按字母顺序映射到当前的数字,并再次调用递归函数来处理下一个数字,并将传递给当前的输出字符串。

例如,如果数字是34,数字3被映射为 "def"。对于映射为 "ghi "的第4位数字,我们在所有的d、e和f上附加字符g、h和i,这将产生dg、dh、di、eg、eh、ei以及fg、fh、fi。

算法

- initialize hashmap with key as digit and value with the corresponding string.

C++解决方案

class Solution {

Golang解决方案

var letters = [...]string{"", "", "abc", "def", "ghi", "jkl",

Javascript的解决方案

const map = {

让我们试运行一下我们的算法,看看这个解决方案是如何工作的。

Input: digits = "23"

原文发表于 https://alkeshghorpade.me.


LeetCode - 电话号码的字母组合》最初发表在《Nerd For Tech》杂志上,人们通过强调和回应这个故事来继续对话。