一、题目叙述:
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"].
二、解题思路:
这个我自己没做出来。。。是参考别人的,思路是这样的。
1、每次读字符串中的一个数字字符,删掉一List中第一个字符串并记下来,然后循环将这个字符串与数字字符对应的字符合并加进List中。
2、初始化时,为方便起见,先给list中加入一个空字符串。
3、注意空字符串输入时的情况。
有点用到了栈。
三、源码:
import java.util.ArrayList;
import java.util.List;
public class Solution
{
public List<String> letterCombinations(String digits)
{
char[][] letter = {{},{},{'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','z'}};
ArrayList<String> relt = new ArrayList<String>();
if (digits.length() == 0) return relt;
relt.add("");
for (int i = 0; i < digits.length(); i++)
{
int size = relt.size();
for (int j = 0; j < size; j++)
{
if (letter[digits.charAt(i)-'0'].length == 0) continue;
String q = relt.get(0);
relt.remove(0);
for (int k = 0; k < letter[digits.charAt(i)-'0'].length; k++)
{
relt.add(q + letter[digits.charAt(i) - '0'][k] + "");
}
}
}
return relt;
}
public static void main(String args[])
{
String digits = "";
Solution so = new Solution();
System.out.println(so.letterCombinations(digits));
}
}