电话号码的字母组合
题目叙述:
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
解题思路:
将每个的情况放在一个List数组中每个键对应的值,递归调用查出所用的情况每次都是当前第一个的数值。直到输入的字符串为空。也就是使用暴力破解的方法。
代码实现:
class Solution {
String[] list = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public List<String> letterCombinations(String digits) {
if (digits.length() != 0)
backTrack("", digits);
return output;
}
List<String> output = new ArrayList<String>();
public void backTrack (String combination, String nextDigits){
if (nextDigits.length() == 0){
output.add(combination);
}else{
String digit = nextDigits.substring(0,1);
int num = Integer.parseInt(digit);
String letters = list[num-2];
for(int i = 0; i < letters.length(); i++){
String letter = letters.substring(i,i+1);
backTrack(combination+letter,nextDigits.substring(1));
}
}
}
}