首页 > 其他 > 详细

2020.7.18

时间:2020-07-18 16:17:26      阅读:43      评论:0      收藏:0      [点我收藏+]

17. 电话号码的字母组合

参考:大佬

思路:递归实现

技术分享图片

public class Solution {
    List<String> res = new ArrayList<String>();
    String[] list = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    public List<String> letterCombinations(String digits) {
        if(digits == null || digits.length() == 0) return new ArrayList<String>();
        iterStr(digits, "", 0);
        return res;
    }
    public void iterStr(String str, String letter, int index){
        if(index == str.length()){
            res.add(letter);
        }
        int pos = str.charAt(index) - ‘0‘;
        String help = list[pos];
        for (int i = 0; i < help.length(); i++) {
            iterStr(str, letter + help.substring(i, i+1), index +1);
        }
    }
}

队列实现

String[] list = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    List<String> res = new ArrayList<String>();
    public List<String> letterCombinations(String digits) {
        if(digits == null || digits.length() == 0) return new ArrayList<String>();
        int pos = digits.charAt(0) - ‘0‘;
        String help = list[pos];
        int size = help.length();
        for (int i = 0; i < size; i++) {
            res.add(help.substring(i, i+1));
        }
        for (int i = 1; i < digits.length(); i++) {
            size = res.size();
            pos = digits.charAt(i) - ‘0‘;
            help = list[pos];
            for (int j = 0; j < size; j++) {
                String op = res.remove(0);
                for (int k = 0; k < help.length(); k++) {
                    res.add(op + help.substring(k, k + 1));
                }
            }
        }
        return res;
    }

 

 

 

 

 

2020.7.18

原文:https://www.cnblogs.com/shish/p/13335057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!