0%

打印字符串的子序列

题目

打印一个字符串的全部子序列, 包括空字符串

题解

迭代过程中, 要么当前字符保留, 要么略过

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Subsequence {
public static void printAllSub(String str) {
char[] chs = str.toCharArray();
process(chs, 0, "");
System.out.println("");
}

public static void process(char[] chs, int i, String pre) {
if (i == chs.length) {
if (!pre.equals("")) {
System.out.println(pre);
}
return;
}
process(chs, i + 1, pre + String.valueOf(chs[i]));
process(chs, i + 1, pre);
}

public static void main(String[] args) {
String test = "abc";
printAllSub(test);
}
}
1
2
3
4
5
6
7
8
abc
ab
ac
a
bc
b
c

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
def print_subsequence(string):
str_arr = [i for i in string]
process(str_arr, 0, '')
print()


def process(str_arr, i, pre):
if i == len(str_arr):
if pre != '':
print(pre)
return
process(str_arr, i + 1, pre + str_arr[i])
process(str_arr, i + 1, pre)