给定一串整数,找出可以按连续顺序排列的所有可能的单词。
给定一串整数如何找出可以按连续顺序从中产生的所有可能的单词。 例如: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); }
我试图找到解决方案,但无法找到所有组合
结合评论说163
可以是1,6,3
或16,3
,但不是1,63
,以及user3437460建议使用递归:
- 取第一个数字并转换为字母。 使用字母和剩余数字进行递归调用。
- 先拿两位数。 如果
<=26
,则转换为letter并使用字母和剩余数字进行递归调用。
这是代码。 由于我不知道该怎么称呼该方法,我将使用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)); } }
产量
AAAAB AAAL AAKB AKAB AKL KAAB KAL KKB ------ AFC PC