给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母
*解题思路
*遍历{"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"},将对应的字符串的字母分别存入List中
*每次遍历把当前字母拼装到已存在的List中的字符串
*最后遍历临时List 把长度和传入的字符长度一致的字符串查询出来 并返回回去
public static List<String> letterCombinations(String digits) {
List<String> res = new ArrayList<>();
List<String> temp = new ArrayList<>();
String[] tel = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
int i = 0 ,length = digits.length();
while (i<length){
/**获取数字对应的字符串*/
String s =tel[(int) (digits.charAt(i)-'2')];
/**获取当前tempLength的长度*/
int tempLength = temp.size();
for (int j = 0 ; j<s.length();j++){
int k =0;
if (tempLength!=0){
while (k<tempLength){
temp.add(temp.get(k)+s.charAt(j));
k++;
}
}else {
temp.add(""+s.charAt(j));
}
}
i++;
}
/**把长度和传入的字符长度一致的字符串查询出来 并返回回去*/
for ( i =temp.size()-1 ;i>=0 ;i--){
if (temp.get(i).length()==length){
res.add(temp.get(i));
}else {
break;
}
}
return res;
}