Letter Combinations of a Phone Number

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

發佈了83 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章