Skip to content

Commit 3d42e00

Browse files
Merge pull request TheAlgorithms#120 from nimit17/ReturnSubsequences
Algorithm to Return Subsequences
2 parents 76b130e + 84b2b8a commit 3d42e00

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

Misc/ReturnSubsequence.java

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
This program will return all the subsequences of the input string in a string array;
3+
Sample Input:
4+
abc
5+
Sample Output:
6+
"" ( Empty String )
7+
c
8+
b
9+
bc
10+
a
11+
ac
12+
ab
13+
abc
14+
15+
*/
16+
17+
import java.util.Scanner;
18+
19+
public class ReturnSubsequence {
20+
/*
21+
Main function will accept the given string and implement return subsequences function
22+
*/
23+
public static void main(String[] args) {
24+
System.out.println("Enter String: ");
25+
Scanner s=new Scanner(System.in);
26+
String givenString=s.next(); //given string
27+
String[] subsequence=returnSubsequence(givenString); //calling returnSubsequence() function
28+
System.out.println("Subsequences : ");
29+
for(int i=0;i<subsequence.length;i++) //print the given array of subsequences
30+
{
31+
System.out.println(subsequence[i]);
32+
}
33+
}
34+
/*
35+
Recursive function to return Subsequences
36+
*/
37+
private static String[] returnSubsequence(String givenString) {
38+
if(givenString.length()==0) // If string is empty we will create an array of size=1 and insert "" (Empty string) in it
39+
{
40+
String[] ans=new String[1];
41+
ans[0]="";
42+
return ans;
43+
44+
}
45+
String[] SmallAns=returnSubsequence(givenString.substring(1)); //recursive call to get subsequences of substring starting from index position=1
46+
47+
String[] ans=new String[2*SmallAns.length];// Our answer will be an array off string of size=2*SmallAns
48+
int i=0;
49+
for (;i<SmallAns.length;i++)
50+
{
51+
ans[i]=SmallAns[i]; //Copying all the strings present in SmallAns to ans string array
52+
}
53+
for (int k=0;k<SmallAns.length;k++)
54+
{
55+
ans[k+SmallAns.length]=givenString.charAt(0)+SmallAns[k]; // Insert character at index=0 of the given substring in front of every string in SmallAns
56+
}
57+
return ans;
58+
}
59+
}

0 commit comments

Comments
 (0)