程序 电话号码的的字母组合 Java编写 acm模式
时间: 2023-05-11 17:03:55 浏览: 183
可以使用回溯算法来解决这个问题。具体实现可以参考以下代码:
```
import java.util.*;
public class PhoneNumberLetterCombinations {
private static final String[] LETTERS = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
public static List<String> letterCombinations(String digits) {
List<String> res = new ArrayList<>();
if (digits == null || digits.length() == 0) {
return res;
}
backtrack(digits, 0, new StringBuilder(), res);
return res;
}
private static void backtrack(String digits, int index, StringBuilder sb, List<String> res) {
if (index == digits.length()) {
res.add(sb.toString());
return;
}
int digit = digits.charAt(index) - '0';
String letters = LETTERS[digit];
for (int i = 0; i < letters.length(); i++) {
sb.append(letters.charAt(i));
backtrack(digits, index + 1, sb, res);
sb.deleteCharAt(sb.length() - 1);
}
}
public static void main(String[] args) {
String digits = "23";
List<String> res = letterCombinations(digits);
System.out.println(res);
}
}
```
这个程序可以输入一个数字字符串,输出所有可能的字母组合。例如,输入"23",输出["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]。
注意,这个程序只能处理数字字符串,不能处理其它类型的字符串。如果输入的字符串中包含非数字字符,程序会抛出异常。
阅读全文