力扣17题(电话号码的字母组合)
作者:互联网
17、电话号码的字母组合
基本思路:
回溯
具体实现:
1、字母和数字的映射
2、
(1)递归参数
num记录遍历输入数字到哪一位
(2)递归终止条件
num==输入的数字个数(digits.length)
(3)单层遍历逻辑
不是求一个集合中的组合,而是求不同集合中的组合
代码:
class Solution { List<String> list = new ArrayList<>(); public List<String> letterCombinations(String digits) { if (digits == null || digits.length() == 0){ return list; } String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; backTracking(digits, numString, 0); return list; } StringBuilder temp = new StringBuilder();//用于字符串拼接 public void backTracking(String digits, String[] numString, int num){ if (num == digits.length()){ list.add(temp.toString()); return; } String str = numString[digits.charAt(num) - '0']; //如果输入digits为‘234’,num首先为0,digits.charAt(num)对应‘2’ //表示我们要去numString中找2对应的字符串 //str放当前对应的字符串 for (int i = 0; i < str.length(); i++){ temp.append(str.charAt(i)); backTracking(digits, numString, num + 1); temp.deleteCharAt(temp.length() - 1); } } }
标签:digits,String,17,力扣,length,num,temp,字母组合,numString 来源: https://www.cnblogs.com/zhaojiayu/p/15408696.html