码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 17 电话号码的字母组合

时间:2020-05-19 21:03:24      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:col   lap   object   http   target   不用   close   etc   div   

原题点这里

知识点:List的复制:目的List的大小必须与源List的大小一致

List tmp = Arrays.asList(new Object[ans.size()]);

Collections.copy(tmp,ans);

JDK8 以后,只有在放入数据后,List中存储数据的数组才会初始化,所以必须要放东西进去。

这样我们在取tmp内的元素时,做一下强制类型转换就行。

补充要给高级语法,装逼利器:

List<String> a = letterCombinations("23");
a.forEach(System.out::println);

 

说回这道题,官方题解用回溯法。其实不用这么麻烦。直接遍历一下就行。

技术图片
    public static List<String> letterCombinations(String digits) {
        List <StringBuffer> ans = new ArrayList<>();
        String[] phone = {"", "","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        for(int i=0;i<digits.length();i++){
            int idx = digits.charAt(i)-‘0‘;
            List tmp = Arrays.asList(new Object[ans.size()]);

            Collections.copy(tmp,ans);
            ans.clear();
            for(int j=0;j<phone[idx].length();j++){
                if(i==0){
                    ans.add(new StringBuffer().append(phone[idx].charAt(j)));
                    continue;
                }
                for (Object oldS:tmp ) {
                    StringBuffer s = (StringBuffer) oldS;
                    StringBuffer newS = new StringBuffer().append(s).append(phone[idx].charAt(j));
                    ans.add(newS);
                };
            }
        }
        List<String> res = new ArrayList<>();
        for(StringBuffer r:ans){
            res.add(r.toString());
        }
        return res;

    }
View Code

 

leetcode 17 电话号码的字母组合

标签:col   lap   object   http   target   不用   close   etc   div   

原文地址:https://www.cnblogs.com/superxuezhazha/p/12918975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!