Letter Combinations of a Phone Number 原题地址:
https://oj.leetcode.com/problems/letter-combinations-of-a-phone-number/
Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].数字为2-9。
public class Solution {
List<String> comb = new ArrayList<String>();
public List<String> letterCombinations(String digits) {
if (digits == null)
return comb;
if (digits == "") {
comb.add("");
return comb;
}
StringBuffer temp = new StringBuffer();
combine(digits, temp, 0);
return comb;
}
public void combine(String digits, StringBuffer temp, int idx) {
if (idx == digits.length()) {
comb.add(temp.toString());
return;
}
int num = Integer.parseInt(digits.substring(idx, idx+1));
int card, fre;
if (num == 7) {
card = 112;
fre = 4;
} else if (num == 8) {
card = 116;
fre = 3;
} else if (num == 9){
card = 119;
fre = 4;
} else {
card = 97 + 3 * (num-2);
fre = 3;
}
for (int i = 0; i < fre; i++) {
char letter = (char) (card + i);
temp.append(letter);
combine(digits, temp, idx+1);
temp.delete(idx, idx+1);
}
}
}