美文网首页
用递归解决组合问题—— 电话号码的字母组合

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

作者: Haward_ | 来源:发表于2019-09-26 22:21 被阅读0次

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

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

    ```

    import java.util.HashMap;

    import java.util.LinkedList;

    import java.util.List;

    import java.util.ArrayList;

    class Solution {

        public List<String> letterCombinations(String digits) {

            HashMap<Integer,String> 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<Character> temp = new LinkedList<>();

            List<String> res = new ArrayList<>();

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

                return res;

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

            return res;

        }

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

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

                StringBuffer s = new StringBuffer();

                for(int i=0;i<temp.size();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<str.length();i++) {

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

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

                temp.pollLast();

            }

        }

    }

    ```

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/tjxepqtx.html