题目详情
Given a digit string, return all possible letter combinations that the number could represent.
mapping of digit to letters (just like on the telephone buttons) is given below.这道题要求我们给出,对于输入的按键组合,我们需要返回按键所对应的所有可能的字符串。而按键和字母的对应关系如上图。
想法
- 这道题就是一种排列组合,对于一种按键组合我们要按照输入顺序排列组合出所有的字符串。
- 每一次按键我们都会得到一系列字符串,如"2"得到"a","b","c"。这将成为下一次操作的前序字符串。
- 我们将字符串存储在linkedlist里面,通过peek操作依次取出前序字符串。对于每一个不同的前序字符串,我们都要在其后面分别加上当前键所表示的不同字符,再将获得的结果字符串加入linkedlist里面。
解法
public List<String> letterCombinations(String digits) {
LinkedList<String> res = new LinkedList<String>();
if(digits.length() == 0){
return res;
}
String[] mapping = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
res.add("");
for(int i=0;i<digits.length();i++){
int index = Character.getNumericValue(digits.charAt(i));
while(res.peek().length() == i){
String temp = res.remove();
for(char c : mapping[index].toCharArray()){
res.add(temp+c);
}
}
}
return res;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。