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

时间:2015-09-01 08:41:40

标签: java combinations sequences

给定一串整数如何找出所有可能以连续顺序排出的单词。例如: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);
}

我正在尝试为此找到解决方案但无法找到所有组合

1 个答案:

答案 0 :(得分:3)

结合评论说明a可以是1631,6,3,但不是16,3 user3437460 的建议使用递归:

  1. 取第一个数字并转换为字母。使用字母和剩余数字进行递归调用。
  2. 先取两位数。如果1,63,请转换为letter并使用字母和剩余数字进行递归调用。
  3. 这是代码。由于我不知道该怎么称呼该方法,因此我将使用<=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));
        }
    }