📅  最后修改于: 2023-12-03 15:22:17.967000             🧑  作者: Mango
在计算机科学中,字符串的子序列是指从原字符串中选择出任意个字符组成的新字符串,它们之间的相对顺序是与原字符串相同的。例如,字符串"abc"的子序列有"","a","b","c","ab","ac","bc","abc"。
下面我们将介绍如何使用Java中的ArrayList打印出一个字符串的所有子序列。
字符串的子序列数量是 2^n-1,其中n为字符串长度。所以可以使用二进制数字(例如000,001,010,011等)表示选择哪些字符组成子序列。具体步骤如下:
下面是Java代码的实现示例:
import java.util.ArrayList;
public class SubsequencePrinter {
public static void printAllSubsequences(String str) {
ArrayList<String> list = new ArrayList<>();
int n = str.length();
for (int i = 0; i < (1 << n); i++) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < n; j++) {
if ((i & (1 << j)) > 0) {
sb.append(str.charAt(j));
}
}
list.add(sb.toString());
}
System.out.println(list);
}
public static void main(String[] args) {
printAllSubsequences("abc");
}
}
list
变量,用于存储所有的子序列。n
表示字符串的长度。main
方法中调用printAllSubsequences
方法,并传入字符串"abc"进行测试。