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”].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
其实就是模拟9宫格键盘,判断输入数字很有那些组合
解法如下:(3ms过,只求过)
import java.util.LinkedList;
import java.util.List;
import org.junit.Test;
public class Solution {
static char [][] src = {{},{},
{'a','b','c'},{'d','e','f'},
{'g','h','i'},{'j','k','l'},{'m','n','o'},
{'p','q','r','s'},{'t','u','v'},{'w','x','y','x'}
};
public List<String> letterCombinations(String digits) {
List<String> result = new LinkedList<>();
List<String> tmp = new LinkedList<>();
char[] aim = digits.toCharArray();
for (int i = 0; i < aim.length; i++) {
if(i==0){
for (int j = 0; j < src[aim[i]-'0'].length; j++) {
result.add(src[aim[i]-'0'][j]+"");
}
System.out.println(result);
}else{
for(String s:result){
for (int j = 0; j < src[aim[i]-'0'].length; j++) {
tmp.add(s+src[aim[i]-'0'][j]);
}
}
List<String> swap = tmp;
tmp = result;
result = swap;
tmp.clear();
}
}
return result;
}
@Test
public void test(){
System.out.println(letterCombinations("23"));
}
}