import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param digits string字符串
* @return string字符串一维数组
*/
public static LinkedList<String> result = new LinkedList<>();
public String[] letterCombinations (String digits) {
// write code here
HashMap<Character, String> map = new HashMap<>();
map.put('2', "abc");
map.put('3', "def");
map.put('4', "ghi");
map.put('5', "jkl");
map.put('6', "mno");
map.put('7', "pqrs");
map.put('8', "tuv");
map.put('9', "wxyz");
LinkedList<String> linkedList = new LinkedList<>();
char[] chars = digits.toCharArray();
Arrays.sort(chars);
for (char aChar : chars) {
linkedList.add(map.get(aChar));
}
search(linkedList, 0, new StringBuffer());
String[] strings = new String[result.size()];
result.toArray(strings);
return strings;
}
public void search(LinkedList<String> linkedList, int index,
StringBuffer stringBuffer) {
if (index == linkedList.size()) {
result.add(stringBuffer.toString());
return;
}
String string = linkedList.get(index);
for (int i = 0; i < string.length(); i++) {
stringBuffer.append(string.charAt(i));
search(linkedList, index + 1, stringBuffer);
stringBuffer.deleteCharAt(stringBuffer.length() - 1);
}
}
}
本题主要考察的知识点是递归,哈希表,所用编程语言是java。
我们首先将每个字符对应的字符串存储下来,然后根据目标仅包含数字 2-9 的字符串 digits中的每个字符对应的字符串添加到集合中,然后每个字符串我们任意取一个字符就是一种组合,所有组合就是我们的字符取法。

京公网安备 11010502036488号