给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
分析:本题同样要求 所有 能表示的组合,那么就是要遍历所有情况,就要使用回溯算法
首先根据题目中所给图片,设计出数字与字母的映射关系,在逐一回溯与递归,即可完成本题
参考代码:
public List
if (digits.length()==0) return ret;
String[] alpha = new String[]{“”,””,”abc”,”def”,”ghi”,”jkl”,”mno”,”pqrs”,”tuv”,”wxyz”};
sup(digits,0,alpha);
return ret;
}
List
StringBuilder path = new StringBuilder();
private void sup(String digits,int index,String[] alpha){
if(index==digits.length()){
ret.add(path.toString());
return;
}
//str为要遍历的字符串,例如数字2对应的“abc”,数字3对应的“def”等,在回溯递归中,要注意是每个数字只取一个
String str=alpha[digits.charAt(index)-‘0’];
for(int i=0;i
sup(digits,index+1,alpha);
path.deleteCharAt(path.length()-1);
}
}
