题目描述:
解法:回溯
通过一个数组来映射数字和字符串。
代码:
class Solution {
public List<String> letterCombinations(String digits) {
rest.clear();
if(digits.length() == 0) return rest;
backtrack(digits, 0);
return rest;
}
String[] helper = {
"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"
};
List<String> rest = new ArrayList<>();
StringBuilder sb = new StringBuilder();
//回溯
void backtrack(String digits, int index){
if(index == digits.length()){
rest.add(sb.toString());
return;
}
int digit = (digits.charAt(index) - '0');
String cur = helper[digit];
for(int i = 0; i < cur.length(); i++){
sb.append(cur.charAt(i));
backtrack(digits, index+1);
sb.deleteCharAt(sb.length() - 1);//回溯
}
}
}