
描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
1 2abc 3def
4ghi 5jkl 6mno
7pqrs 8tuv 9wxyz
*+ 0__ #
示例:
输入:”23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
class Solution { public List<String> letterCombinations(String digits) { List<String> list =new ArrayList<>(); String[] s =new String[digits.length()]; int M=digits.length(); if(M==0) { return list; } for(int i =0;i<M;i++) { switch(digits.charAt(i)) { case '2':s[i]="abc";break; case '3':s[i]="def";break; case '4':s[i]="ghi";break; case '5':s[i]="jkl";break; case '6':s[i]="mno";break; case '7':s[i]="pqrs";break; case '8':s[i]="tuv";break; case '9':s[i]="wxyz";break; } } list=getStringWithFor(s,0,list,""); return list; } private static List<String> getStringWithFor(String []s,int i,List<String> list,String stemp) { if(i<s.length-1) { for(int j=0;j<s[i].length();j++) { list=getStringWithFor(s,i+1,list,stemp+s[i].charAt(j)); } i++; }else{ for(int j =0;j<s[i].length();j++) { list.add(stemp+s[i].charAt(j)); } } return list; } }
|
近期评论