思路不难,过程有点繁琐
要预定义一个字符串数组,下标数字与对应元素字符串有着题目所示的映射规律;所以数组的0和1下标对应元素为" ";
这里使用string builder;
递归函数传入一个指针,代表当前过程字符串的长度,
终止条件:当长度与要求长度一致,收割结果
每次进入循环之前都要获取到当前指针所指数字对应的字符串;
以该字符串长度进行循环,每次循环将当前字符串加入中间结果
java
class Solution {
List<String> res = new ArrayList<>();
public List<String> letterCombinations(String digits) {
if(digits == null || digits.length() == 0){
return res;
}
String[] numstring = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
f(digits,numstring,0);
return res;
}
StringBuilder temp = new StringBuilder();
public void f(String digits,String[] numstring,int index){
if(index == digits.length()){
res.add(temp.toString());
return;
}
String s = numstring[digits.charAt(index) - '0'];
for(int i = 0;i < s.length();i++){
temp.append(s.charAt(i));
f(digits,numstring,index + 1);
temp.deleteCharAt(temp.length() - 1);
}
}
}