我正在使用下面的程序打印所有可能的子序列
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
还有其他方法可以得到相同的结果吗?
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
如果您希望不进行递归操作:
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();
}
}
}
这是我能想到的最直接的方法。
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));
}
}