-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathAllSubsequences.js
31 lines (28 loc) · 908 Bytes
/
AllSubsequences.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* @author Anirudh Sharma
*
* Given a string, we have to find out all subsequences of it. A String is a subsequence of a given String,
* that is generated by deleting some character of a given string without changing its order.
*/
const findSubsequences = (s) => {
// Array to store the result
const subsequences = [];
findSubsequencesHelper(s, "", subsequences);
return subsequences;
};
const findSubsequencesHelper = (s, current, subsequences) => {
// Base case
if (s.length === 0) {
subsequences.push(current);
return;
}
// Include first character
findSubsequencesHelper(s.substring(1), current + s.charAt(0), subsequences);
// Skip first character
findSubsequencesHelper(s.substring(1), current, subsequences);
};
const main = () => {
console.log(findSubsequences("Hello"));
console.log(findSubsequences("abcd"));
};
main();