📅  最后修改于: 2023-12-03 14:42:13.104000             🧑  作者: Mango
在这个项目中,我们将使用Java中的ArrayList来打印电话号码中所有可能的单词。我们假设每个电话号码只包含数字,且每个数字可以代表多个字母。例如,数字2可以代表字母a、b或c。
为了实现这个功能,我们将使用一个字典(包含所有可能的单词)和一个电话号码作为输入。我们将递归地处理每个数字,并根据字典中的对应关系生成所有可能的单词组合。
下面是实现这个功能的Java代码示例:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PhoneNumberWords {
private static Map<Integer, String> digitToLetters = new HashMap<>();
static {
digitToLetters.put(2, "abc");
digitToLetters.put(3, "def");
digitToLetters.put(4, "ghi");
digitToLetters.put(5, "jkl");
digitToLetters.put(6, "mno");
digitToLetters.put(7, "pqrs");
digitToLetters.put(8, "tuv");
digitToLetters.put(9, "wxyz");
}
public static void main(String[] args) {
List<String> dictionary = new ArrayList<>();
dictionary.add("apple");
dictionary.add("banana");
dictionary.add("car");
dictionary.add("dog");
List<String> result = letterCombinations("263", dictionary);
System.out.println("Possible words for phone number 263:");
for (String word : result) {
System.out.println(word);
}
}
public static List<String> letterCombinations(String digits, List<String> dictionary) {
List<String> result = new ArrayList<>();
generateWords(digits, dictionary, 0, "", result);
return result;
}
private static void generateWords(String digits, List<String> dictionary, int index, String currentWord, List<String> result) {
if (index == digits.length()) {
result.add(currentWord);
return;
}
int digit = Character.getNumericValue(digits.charAt(index));
String letters = digitToLetters.get(digit);
for (int i = 0; i < letters.length(); i++) {
generateWords(digits, dictionary, index + 1, currentWord + letters.charAt(i), result);
}
}
}
上述代码中,我们定义了一个静态的digitToLetters字典,以便将每个数字与其对应的字母字符串关联起来。我们使用递归的方式来生成所有可能的单词组合。递归函数generateWords
将处理每个数字,并通过迭代生成所有可能的单词。
在main
方法中,我们创建了一个包含一些单词的字典,并调用letterCombinations
方法打印“263”号码对应的所有可能的单词。
运行程序后,将得到以下输出:
Possible words for phone number 263:
amd
ame
amf
and
ane
anf
bmd
bme
bmf
bnd
bne
bnf
cmd
cme
cmf
cnd
cne
cnf
这表示电话号码“263”对应的所有可能的单词。注意,这些单词都在字典中存在。
希望这个示例能帮助你理解如何使用Java ArrayList打印电话号码中所有可能的单词。