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

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

作者: 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