All subsets I

Given a set of characters represented by a String, return a list containing all subsets of the characters.

Assumptions

  • There are no duplicate characters in the original set.

​Examples

  • Set = "abc", all the subsets are [β€œβ€, β€œa”, β€œab”, β€œabc”, β€œac”, β€œb”, β€œbc”, β€œc”]

  • Set = "", all the subsets are [""]

  • Set = null, all the subsets are []

Solution:

Recursive DFS

Recursion Tree:

                                 _
                            A         _
                        AB     A    B   _
                     ABC  AB AC A BC B C _

Base Case: When Index == set.length; Print current

Recursive rule:

  1. Add current letter StringBuilder

  2. Recursive call with next letter

  3. Delete previous addition to StringBuilder

  4. Recursive call with next letter

Implementation:

Time Complexity: O(2^N) , O(2^N * N) if storing result into array

2^N nodes * optional: toString for storing in array

Space Complexity: O(N)

StringBuilder max length = N

Last updated

Was this helpful?