用递归解决组合问题—— 电话号码的字母组合

描述:给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。


```

import java.util.HashMap;

import java.util.LinkedList;

import java.util.List;

import java.util.ArrayList;

class Solution {

    public List letterCombinations(String digits) {


        HashMap map = new HashMap<>();

        map.put(2,"abc");

        map.put(3,"def");

        map.put(4,"ghi");

        map.put(5,"jkl");

        map.put(6,"mno");

        map.put(7,"pqrs");

        map.put(8,"tuv");

        map.put(9,"wxyz");


        LinkedList temp = new LinkedList<>();

        List res = new ArrayList<>();


        if(digits==null || digits.length()==0)

            return res;


        dfs(map,digits,0,res,temp);

        return res;

    }


    private void dfs(HashMap map, String digits, int index, List res, LinkedList temp) {

        if(index>digits.length()-1) {

            StringBuffer s = new StringBuffer();

            for(int i=0;i

                s.append(temp.get(i));

            }

            res.add(s.toString());

            return;

        }

        int n = digits.charAt(index)-'0';

        String str = map.get(n);

        for(int i=0;i

            temp.add(str.charAt(i));

            dfs(map,digits,index+1,res,temp);

            temp.pollLast();

        }

    }

}

```

你可能感兴趣的:(用递归解决组合问题—— 电话号码的字母组合)