leetcode 17 电话号码的字母组合
public static StringBuilder sb=new StringBuilder();
public static String[] numString = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public static List<String> result=new ArrayList<>();
public static List<String> letterCombinations(String digits){
result=new ArrayList<>();
if(digits==null||digits.length()==0) return result;
char[] nums = digits.toCharArray();
int k = nums.length;
backTracking(nums,k,0);
return result;
}
private static void backTracking(char[] nums, int k,int startIndex) {
if(sb.length()==k){
//sb=sb.append(numString[subIndex].charAt(2));
result.add(sb.toString());
return;
}
int subIndex = nums[startIndex]-'0';//转化成数字index
for(int i=0;i<numString[subIndex].length();i++){
sb = sb.append(numString[subIndex].charAt(i)); //通过numString 直接拿目标字串,再拿它字符
backTracking(nums,k,startIndex+1);
//sb = sb.replace(sb.length()-1,sb.length()-1," ");
sb.deleteCharAt(sb.length()-1);
}
}
没有检索到标题
该问题涉及将数字映射到字母并生成所有可能的字符串组合。使用回溯算法,遍历每个数字对应的字母,递归地构建所有可能的字符串,直到达到指定长度。当字符串长度等于输入数字的长度时,将该字符串添加到结果列表中。
1376

被折叠的 条评论
为什么被折叠?



