Java递归电话号码信件 [英] Java recursion phone number letters
问题描述
如何使用递归方法编写java程序,该方法接收类似234的int并将其转换为电话簿上的相应字母(2 = ABC,3 = DEF等),并打印出来这种排列?例如:
How do you write a java program using a recursive method that takes in an int like "234" and converts this into the corresponding letters on a phone pad (2 = ABC, 3 = DEF, etc), and prints out the permutations of this? e.g.:
输入= 234
输出= ADG ADH ADI AEG AEH AEI AFG AFH AFI BDG BDH BDI BEG BEH BEI BFG BFH BFI CDG CDH CDI CEG CEH CEI CFG CFH CFI
output = ADG ADH ADI AEG AEH AEI AFG AFH AFI BDG BDH BDI BEG BEH BEI BFG BFH BFI CDG CDH CDI CEG CEH CEI CFG CFH CFI
input = 89
input = 89
输出= TW TX TY TZ UW UX UY UZ VW VX VY VZ
output = TW TX TY TZ UW UX UY UZ VW VX VY VZ
推荐答案
这是一个版本没有数组或arraylist。结果将根据您的要求打印到标准输出。
Here's a version without either array or arraylist. Results are printed to stdout as you requested.
String[] allLetters = new String[] {
"0",
"1",
"ABC",
"DEF",
"GHI",
"JKL",
// etc...
};
public static void convert(String phoneNumber)
{
convertSubstring(phoneNumber,"");
}
private static void convertSubstring(String phoneNumber, String convertedLetters)
{
int digit = Integer.parseInt(phoneNumber.substring(0, 1));
String letters=allLetters[digit];
String remainingString=phoneNumber.substring(1);
for (int i = 0; i < letters.length(); ++i)
{
char letter = letters.charAt(i);
String result=convertedLetters+letter;
if (remainingString.length()==0)
System.out.println(result);
else
convertSubstring(remainingString, result);
}
}
这篇关于Java递归电话号码信件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!