问题描述:
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”].
分析:这道题比较简单,可能稍微需要动动脑子的地方就是最后如何拼接成字符串的形式。这里使用链表来模拟队列。
代码如下:284ms
public class Solution {
private String getString(int number){
switch (number){
case '2':return "abc";
case '3':return "def";
case '4':return "ghi";
case '5':return "jkl";
case '6':return "mno";
case '7':return "pqrs";
case '8':return "tuv";
case '9':return "wxyz";
default:return null;
}
}
public List<String> letterCombinations(String digits) {
List<String> res = new LinkedList<String>();
int length = digits.length();
String[] strings = new String[length];
if(length<=0)
return res;
for(int i = 0;i<length;i++){
strings[i] = getString(digits.charAt(i));
}
for(int row = 0;row<strings[0].length();row++){
res.add(new String(new char[]{strings[0].charAt(row)}));
}
for(int col = 1;col<length;col++){
int size = res.size();
for(int i = 0;i<size;i++){
String tmp = res.get(0);
String next = strings[col];
res.remove(0);
for(int j = 0;j<next.length();j++)
res.add(tmp+next.charAt(j));
}
}
return res;
}
}