给定一串整数,找出可以按连续顺序排列的所有可能的单词。

给定一串整数如何找出可以按连续顺序从中产生的所有可能的单词。 例如: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,316,3 ,但不是1,63 ,以及user3437460建议使用递归:

  1. 取第一个数字并转换为字母。 使用字母和剩余数字进行递归调用。
  2. 先拿两位数。 如果<=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