问题描述:给定一个包含数字 2-9 的字符串,返回所有可能的字母组合。数字到字母的映射与电话按键相同,注意数字与字母的映射关系如下(与标准电话键盘相同):
2:abc3:def4:ghi5:jkl6:mno7:pqrs8:tuv9:wxyz
示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
代码示例(使用Python):
代码解释:
首先,我们定义了一个Solution类,其中包含了一个letterCombinations方法来处理问题。
letterCombinations方法首先判断输入的数字字符串是否为空,如果为空,则直接返回空列表。
然后,我们定义了一个映射表mapping,用于将数字映射到相应的字母。
我们创建一个空列表result,用于存储最终的结果。
接下来,调用backtrack方法,开始递归回溯过程,传入空字符串combination、数字字符串digits、映射表mapping和结果列表result。
在backtrack方法中,我们首先判断如果数字字符串长度为0,则表示已经生成了一个完整的组合,将其添加到结果列表中。
否则,我们遍历当前数字所对应的字母集合,对于每个字母,都调用backtrack方法,将当前字母添加到组合中,并递归处理剩余的数字字符串(从下一个数字开始),直到数字字符串为空。
最终,我们通过调用letterCombinations方法返回结果列表result。
代码示例(使用Java):
代码解释:
- 在Java版本的代码中,我们定义了一个Solution类,其中包含了一个letterCombinations方法来处理问题。
- letterCombinations方法首先创建一个空列表result,用于存储最终的结果。
- 然后,我们判断如果输入的数字字符串为null或长度为0,则直接返回空列表。
- 接下来,我们定义了一个字符串数组mapping,用于将数字映射到相应的字母集合。
- 我们调用backtrack方法,开始递归回溯过程,传入空字符串combination、数字字符串digits、起始索引index、映射表mapping和结果列表result。
- 在backtrack方法中,首先判断如果索引等于数字字符串的长度,则表示已经生成了一个完整的组合,将其添加到结果列表中。
- 否则,我们根据当前索引从映射表中取出相应的字母集合。
- 遍历字母集合中的每个字符,对于每个字符,都将其加到当前组合中,并递归调用backtrack方法,处理下一个数字字符(增加索引),直到索引达到数字字符串的长度。
- 最终,我们通过调用letterCombinations方法返回结果列表result。
这两个代码示例分别用Python和Java展示了解决LeetCode上"Letter Combinations of a Phone Number"问题的算法实现。您可以根据自己熟悉的编程语言选择其中一个示例,并根据需要进行适当的调整和优化。这些示例代码可以帮助您理解问题的解决思路和具体实现方式。
领取专属 10元无门槛券
私享最新 技术干货