LeetCode 17. Letter Combinations of a Phone Number

来源:互联网 发布:阿里巴巴查排名软件 编辑:程序博客网 时间:2024/05/16 00:56

Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

其实就是模拟9宫格键盘,判断输入数字很有那些组合

解法如下:(3ms过,只求过)

import java.util.LinkedList;import java.util.List;import org.junit.Test;public class Solution {    static char [][] src = {{},{},                            {'a','b','c'},{'d','e','f'},                            {'g','h','i'},{'j','k','l'},{'m','n','o'},                            {'p','q','r','s'},{'t','u','v'},{'w','x','y','x'}    };    public List<String> letterCombinations(String digits) {        List<String> result = new LinkedList<>();        List<String> tmp = new LinkedList<>();        char[] aim = digits.toCharArray();        for (int i = 0; i < aim.length; i++) {            if(i==0){                for (int j = 0; j < src[aim[i]-'0'].length; j++) {                    result.add(src[aim[i]-'0'][j]+"");                }                System.out.println(result);            }else{                for(String s:result){                    for (int j = 0; j < src[aim[i]-'0'].length; j++) {                        tmp.add(s+src[aim[i]-'0'][j]);                    }                }                List<String> swap = tmp;                tmp = result;                result = swap;                tmp.clear();            }        }        return result;    }    @Test    public void test(){        System.out.println(letterCombinations("23"));    }}
0 0
原创粉丝点击