思路 参数里调用上一个list 读取出来 再加上新的letter组成新的string加入到新的list中,最后返回新的list

代码:

public class Solution {
    public List<String> letterCombinations(String digits) {
        List<String> list = new ArrayList<>();
        for(int i = 0; i < digits.length(); i++){
            char c = digits.charAt(i);
            list = addLetter(list, c);
        }
        return list;
        
    }
    
    public List<String> addLetter(List<String> list, char c){
        if(c == '1' || c == '0') return list;
        int len = list.size();
        List<String> newList = new ArrayList<>();
        int i = (int) (c - '2');
        if(len == 0){
            if(i>=0 && i<=4){
                for(int j = 0; j < 3; j++){
                    char ch = (char) ('a'+3*i+j);
                    newList.add(""+ch);
                }
            }
            else if(i == 5){
                newList.add(""+ 'p');
                newList.add(""+ 'q');
                newList.add(""+ 'r');
                newList.add(""+ 's');
            }
            else if(i == 6){
                newList.add(""+ 't');
                newList.add(""+ 'u');
                newList.add(""+ 'v');
            }
            else{
                newList.add(""+ 'w');
                newList.add(""+ 'x');
                newList.add(""+ 'y');
                newList.add(""+ 'z');
            }
            return newList;
        }
        for(int k = 0; k < len; k++){
            String s = list.get(k);
            if(i>=0 && i<=4){
                for(int j = 0; j < 3; j++){
                    char ch = (char) ('a'+3*i+j);
                    newList.add(s+ch);
                }
            }
            else if(i == 5){
                newList.add(s+ 'p');
                newList.add(s+ 'q');
                newList.add(s+ 'r');
                newList.add(s+ 's');
            }
            else if(i == 6){
                newList.add(s+ 't');
                newList.add(s+ 'u');
                newList.add(s+ 'v');
            }
            else{
                newList.add(s+ 'w');
                newList.add(s+ 'x');
                newList.add(s+ 'y');
                newList.add(s+ 'z');
            }
        }
        return newList;
    }
}

  

posted on 2016-01-16 02:58  爱推理的骑士  阅读(93)  评论(0编辑  收藏  举报