给定一串整数如何找出所有可能以连续顺序排出的单词。例如:11112
ans:AAAAB AKAB AAKB AAAL等。
public static void main(String[] args) {
String str="11111124";
char strChar[]=str.toCharArray();
String target="";
for(int i=0;i<strChar.length;i++)
{
target=target+(char)Integer.parseInt(""+(16+strChar[i]));
}
System.out.println(target);
}
我正在尝试为此找到解决方案但无法找到所有组合
答案 0 :(得分:3)
结合评论说明a
可以是163
或1,6,3
,但不是16,3
, user3437460 的建议使用递归:
1,63
,请转换为letter并使用字母和剩余数字进行递归调用。这是代码。由于我不知道该怎么称呼该方法,因此我将使用<=26
。
x
输出
public static void main(String[] args) {
x("11112", "");
System.out.println("------");
x("163", "");
}
private static final void x(String digits, String word) {
if (digits.isEmpty())
System.out.println(word);
else {
int num = Integer.parseInt(digits.substring(0, 1));
x(digits.substring(1), word + (char)('A' + num - 1));
if (digits.length() >= 2 && (num = Integer.parseInt(digits.substring(0, 2))) <= 26)
x(digits.substring(2), word + (char)('A' + num - 1));
}
}