[LeetCode] Letter Combinations of a Phone Number

来源:互联网 发布:北京北大青鸟网络学校 编辑:程序博客网 时间:2024/06/05 03:40

这个问题大概是考察递归,写了一个递归的算法。主要是输入没有考虑“”,也没有想到输出也要求[""],其他代码基本上没有问题。

public class Solution {static String[][] keyMap = { { " " }, {}, { "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", "z" } };    public ArrayList<String> letterCombinations(String digits) {ArrayList<String> result = new ArrayList<String>();if (digits == null || digits.isEmpty()) {result.add("");return result;}int length = digits.length();if (length == 1) {int num = Integer.valueOf(digits);String[] kMap = keyMap[num];for (int i = 0; i < kMap.length; ++i) {result.add(kMap[i]);}} else {ArrayList<String> subResult = letterCombinations(digits.substring(1, length));String first = digits.substring(0, 1);int num = Integer.valueOf(first);String[] kMap = keyMap[num];for (int i = 0; i < kMap.length; ++i) {for (int j = 0; j < subResult.size(); ++j) {result.add(kMap[i] + subResult.get(j));}}}return result;    }}

0 0
原创粉丝点击