package com.thealgorithms.others;
import java.util.Scanner;
public final class ReturnSubsequence {
private ReturnSubsequence() {
}
public static void main(String[] args) {
System.out.println("Enter String: ");
Scanner s = new Scanner(System.in);
String givenString = s.next();
String[] subsequence = returnSubsequence(givenString);
System.out.println("Subsequences : ");
for (int i = 0; i < subsequence.length; i++) {
System.out.println(subsequence[i]);
}
s.close();
}
private static String[] returnSubsequence(String givenString) {
if (givenString.length() == 0) {
String[] ans = new String[1];
ans[0] = "";
return ans;
}
String[] smallAns = returnSubsequence(givenString.substring(1));
String[] ans = new String[2 * smallAns.length];
System.arraycopy(smallAns, 0, ans, 0, smallAns.length);
for (int k = 0; k < smallAns.length; k++) {
ans[k + smallAns.length] = givenString.charAt(0) + smallAns[k];
}
return ans;
}
}