LeetCode17、電話番号の文字の組み合わせ

タイトル説明

ここに画像の説明を挿入

最初のメソッド再帰的バックトラック

明らかに、これは類似した行列の列挙に基づいています。マッピングを確立して再帰します。再帰が完了するたびに、結果が1回見つかります。結果は対応するリストに追加されます。コードを理解するのは簡単です。

class Solution {
    
    
    public List<String> letterCombinations(String digits) {
    
    
        HashMap<Character,String[]> map = new HashMap<>();
        map.put('2',new String[]{
    
    "a","b","c"});
        map.put('3',new String[]{
    
    "d","e","f"});
        map.put('4',new String[]{
    
    "g","h","i"});
        map.put('5',new String[]{
    
    "j","k","l"});
        map.put('6',new String[]{
    
    "m","n","o"});
        map.put('7',new String[]{
    
    "p","q","r","s"});
        map.put('8',new String[]{
    
    "t","u","v"});
        map.put('9',new String[]{
    
    "w","x","y","z"});

        return getList(digits,map,"",0,new ArrayList<String>()); 
    }
    public List<String> getList(String digits,Map map,String s1,int index,List list){
    
    
        if(index>=digits.length()){
    
    
            return list;
        }
        String []nums = (String[])map.get(digits.charAt(index));
        for(int j=0;j<nums.length;j++){
    
    
            if(index==0){
    
    
                s1 = "";
            }
            String s = s1;//保存之前的值。
            s1+=nums[j];
            getList(digits,map,s1,index+1,list);
            if(index==digits.length()-1){
    
    
                list.add(s1);//添加完了一项。 
            }
            s1 = s;//之前的s1
           
        }
        return list;
    }
    
}

ここに画像の説明を挿入

この提出のビートレートを見ると、まだ多くの承認が得られていません。結局、初めて作ったのです。

おすすめ

転載: blog.csdn.net/qq_44861675/article/details/108521261