LeetCode每日一题,17. Letter Combinations of a Phone Number
先看题目描述
大意就是手机上的数字与字母对应,给出只含数字的字符串,让我们返回对应字母的排列组合
算法与思路
一开始的思路是模拟数字一个个的添加进来,先是添加 2 对应的,于是 res 中就有 [“a”, “b”, “c”],然后将 3 添加进来,因为 3 对应 3 个字母,先将 res * 3 变为 [“a”, “b”, “c”, “a”, “b”, “c”, “a”, “b”, “c”],然后分别添加 3 个 “d”,3 个 “e”,3 个 “f”,res 变为 [“ad”, “bd”, “cd”, “ae”, “be”, “ce”, “af”, “bf”, “cf”],然后返回 res 即可,就用代码模拟这个过程
算法源码
1 | import java.util.*; |
但这个代码的运行效率不行,后来看了题解才发现可以用回溯,且频繁的字符串组装可以使用 StringBuilder 下面是使用回溯和 StringBuilder 的代码
1 | import java.util.*; |