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"));    } }

原创粉丝点击