Letter Combinations of a Phone Number
来源:互联网 发布:高新区行知小学地址 编辑:程序博客网 时间:2024/04/30 16:36
import java.util.ArrayList;public class Solution { public int[] count; public char[] letter; ArrayList<String> ret; public ArrayList<String> letterCombinations(String digits) { // Start typing your Java solution below // DO NOT write main() function if(digits.length()==0){ ret =new ArrayList<String>(); String ans = new String(); ret.add(ans); return ret; } count = new int[10]; letter = new char[10]; ret = new ArrayList<String>(); int len = digits.length(); count[2]=count[3]=count[4]=count[5]=count[6]=count[8]=3; count[7]=count[9]=4; letter[2]='a';letter[3]='d';letter[4]='g'; letter[5]='j';letter[6]='m';letter[7]='p'; letter[8]='t';letter[9]='w'; dfs(0,len-1,digits,new StringBuilder()); return ret; } private void dfs(int levelnow,int levelfinal,String digits,StringBuilder sb){ int index = (int)(digits.charAt(levelnow) - '0'); if(levelnow==levelfinal){ for(int i=0;i<count[index];i++){ char now = (char)(letter[index]+i); String ans = new String(sb.append(now)); ret.add(ans); sb.deleteCharAt(sb.length() - 1); } } else{ for(int i=0;i<count[index];i++){ char now = (char)(letter[index]+i); sb.append(now); dfs(levelnow+1,levelfinal,digits,sb); sb.deleteCharAt(sb.length() - 1); } } } public static void main(String[] args){ Solution s = new Solution(); System.out.println(s.letterCombinations("23")); } }