LeetCode 解题报告 (17)-- 电话数字组合成的不同字符串
原题如下:
>Given a digit string, return all possible letter combinations that the number could represent.
>A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
题目很好理解,就是组合出所有可能结果即可。每个数字写一个 for 循环即可,但是在程序运行前我们无法知道到底输入有几个数字,下面给出两个方法解决这个问题。
方法一是回溯法,每次选择当前数字的一个字符,然后将下一个数字作为当前数字,直到所有的数字都遍历完即可。实现的代码如下所示:
1 | class Solution(object): |
除了回溯法,还可以通过顺序的合并,考虑每次对两个 string list 进行合并,合并后作为一个 string list,再和后面的一个数字表示的 string list 合并,就这样一直循环下去直到最后一个数字
实现代码如下:
1 | #encoding:utf-8 |
如有更好的解法,欢迎交流