如何以最简单的方式在Java中找到数字的子序列

问题描述 投票:1回答:3

我正在使用下面的程序打印所有可能的子序列

class Test {

    static void printSubSeqRec(String str, int n, int index, String curr) {
        if (index == n) {
            return;
        }
        System.out.println(curr);

        for (int i = index + 1; i < n; i++) {
            curr += str.charAt(i);
            printSubSeqRec(str, n, i, curr);

            curr = curr.substring(0, curr.length() - 1);
        }
    }

    static void printSubSeq(String str) {
        int index = -1;
        String curr = "";

        printSubSeqRec(str, str.length(), index, curr);
    }

    public static void main(String[] args) {
        String str = "24";
        printSubSeq(str);
    }

}

输出:

2424

还有其他方法可以得到相同的结果吗?

java
3个回答
0
投票
public class main {
public static void main(String[] args) {
    String str= "243";
    for(int i = 1; i<= str.length();i++){
        int m = 0;
        for(int j =0;j < str.length() && m+i <= str.length();j++){
            System.out.println(str.substring(j,m+i));
            m++;
        }
    }
}

}

结果:

2 4 3 24 43 243

0
投票

如果您希望不进行递归操作:

static void printSubSeq(String str) {
    for(int i = 1; i <= str.length(); i++) {
        for(int j = 0; j <= str.length() - i; j++) {
            int k = j + i - 1;
            for(int l = j; l <= k; l++) System.out.print(str.charAt(l));
            System.out.println();
        }
    }
}

0
投票

这是我能想到的最直接的方法。

      String numb = "1234";
      for (int z = 0; z <= 4; z++) {
         for (int k = z; k <= 4; k++) {
            System.out.println(numb.substring(k - z, k));
         }
      }

© www.soinside.com 2019 - 2024. All rights reserved.