求子序列
题目描述
求已给序列的子序列(去重)。
题解
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
public class Subsequence {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char[] str = scan.nextLine().toCharArray();
scan.close();
// List<String> ans = new ArrayList<>();
HashSet<String> ans = new HashSet<>(); //使用HashSet去重
String path="";
process(str, 0, ans, path);
for(String i:ans) {
System.out.print(i+" ");
}
}
//递归实现
public static void process(char[] str,int index,HashSet<String> ans,String path) {
if(index==str.length) {
ans.add(path);
return;
}
String no = path;
process(str,index+1,ans,no);
String yes = path + String.valueOf(str[index]);
process(str,index+1,ans,yes);
}
}