我正在使用以下程序来打印所有可能的子序列
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);
}
}
输出:
2
4
24
还有其他方法可以得到相同的结果吗?
最佳答案
为了解决这个问题,我想以给定的顺序生成以下几对索引。第一个元素是子字符串的开头,第二个元素是四个字符串的限制。
[0,1], [1,2], [2,3], [3,4], [0,2], [1,3], [2,4], [0,3], [1,4], [0,4]
这是我想出的最简单的方法。
String numb = "1234";
for (int z = 1; z <= numb.length(); z++) {
for (int k = z; k <= numb.length(); k++) {
System.out.println(numb.substring(k - z, k));
}
}
如果要递归执行,则这是一种方法。
String numb = "1234";
subseq(numb, 0, 1, 1);
public static void subseq(String v, int z, int k, int i) {
System.out.println(v.substring(z, k));
if (k < v.length()) {
subseq(v, z + 1, k + 1, i);
}
else if (z > 0) {
subseq(v, 0, 1 + i, i + 1);
}
}
对
subseq
的第一个递归调用使z
和k
分别加1。i
用作增加k
的下一个数量因此,对
subseq
的第二次调用将z
还原为0,将k
还原为1+i
在第二个调用中,
i
也增加了1一直持续到
k >= length of string
和z = 0
字符串和最后打印的字符串。
但是我更喜欢嵌套循环解决方案。
关于java - 如何以最简单的方式在Java中找到数字的子序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59359912/