给定一个仅包含数字 2-9 的字符串,可以使用回溯算法来生成所有可能的字母组合。下面是一个Java代码示例,实现这个功能:
import java.util.ArrayList;
import java.util.List;
public class LetterCombinations {
private static final String[] LETTERS = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
public List<String> letterCombinations(String digits) {
List<String> result = new ArrayList<>();
if (digits == null || digits.length() == 0) {
return result;
}
backtrack(result, digits, "", 0);
return result;
}
private void backtrack(List<String> result, String digits, String current, int index) {
if (index == digits.length()) {
result.add(current);
return;
}
String letters = LETTERS[digits.charAt(index) - '0'];
for (int i = 0; i < letters.length(); i++) {
backtrack(result, digits, current + letters.charAt(i), index + 1);
}
}
public static void main(String[] args) {
LetterCombinations lc = new LetterCombinations();
System.out.println(lc.letterCombinations("23")); // ["ad","ae","af","bd","be","bf","cd","ce","cf"]
System.out.println(lc.letterCombinations("")); // []
System.out.println(lc.letterCombinations("2")); // ["a","b","c"]
}
}
在这个代码示例中,我们定义了一个LetterCombinations
类,其中包含了一个letterCombinations
方法来生成所有可能的字母组合。通过回溯算法,我们递归地构建每个数字对应的字母组合,并将结果存储在result
列表中。最后,我们通过调用main
方法来测试这个功能,并输出示例输入的结果。