java 怎么完成给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)注意 1 不对应任何 字母
时间: 2024-12-19 12:18:12 浏览: 0
在 Java 中,你可以使用递归的方式来解决这个问题,利用字符映射数组将数字转换成对应的字母。以下是一个简单的解决方案:
```java
public class Solution {
private static final String[] NUMBER_TO_LETTER = {"", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
public List<String> letterCombinations(String digits) {
if (digits.isEmpty()) return Collections.emptyList();
List<String> result = new ArrayList<>();
helper(digits, 0, "", result);
return result;
}
private void helper(String digits, int start, String current, List<String> result) {
if (start == digits.length()) {
result.add(current);
return;
}
char digit = digits.charAt(start);
for (int i = 0; i < NUMBER_TO_LETTER[digit - '2'].length(); i++) {
helper(digits, start + 1, current + NUMBER_TO_LETTER[digit - '2'].charAt(i), result);
}
}
}
```
在这个`letterCombinations`函数中,我们首先检查输入字符串是否为空。然后创建一个空的结果列表用于存储最终结果。接着,`helper`函数通过递归处理每个数字,从第一个位置开始,依次尝试每一个可能的字母,直到遍历完所有的数字。在每一步中,我们都将当前字母添加到`current`字符串上,并继续下一位数字。
阅读全文