zoukankan      html  css  js  c++  java
  • leetcode 17 *的字母组合

    原题点这里

    知识点: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
  • 相关阅读:
    unity打包iOS上线归纳
    unity update优化
    3dmax 法线重置
    unity2017分离动作
    unity5 manifest
    Unity5 AssetBundle资源管理架构设计
    ue4 tags 与 cast
    3dmax tcb控制器
    ue4 创建简易动画
    即时战略游戏中实用的寻路算法都有哪些,比较如何?
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/12918975.html
Copyright © 2011-2022 走看看