Print all subsequences of a string in Python

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.
Examples: 
 

Input : abc
Output : a, b, c, ab, bc, ac, abc

Input : aaa
Output : a, aa, aaa

 

Using Pick and Don’t Pick concept :

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

def printSubSequences(STR, subSTR=""):
    """
    function:
        To print all subsequences of string
        concept:
            Pick and Don’t Pick
        variables:
            STR = string
            subSTR = to store subsequence
    """
    if len(STR) == 0:
        print(subSTR, end=" ")
        return
 
    # we add adding 1st character in string
    printSubSequences(STR[:-1], subSTR + STR[-1])
    """
    Not adding first character of the string
    because the concept of subsequence either
    character will present or not
    """
    printSubSequences(STR[:-1], subSTR)
    return
 
 
def main():
    """
    main function to drive code
    """
    STR = "abc"
    printSubSequences(STR)
 
 
if __name__ == "__main__":
    main()
 
# by itsvinayak

chevron_right


Output:

cba cb ca c ba b a  

pythonic implementations:

Prerequisite: itertools.combinations() module in Python to print all possible combinations 
 

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python Implementation of the approach
import itertools
 
def Sub_Sequences(STR):
    combs = []
    for l in range(1, len(STR)+1):
        combs.append(list(itertools.combinations(STR, l)))
    for c in combs:
        for t in c:
            print (''.join(t), end =' ')
 
# Testing with driver code
if __name__ == '__main__':
    Sub_Sequences('abc')

chevron_right


Output: 

a b c ab ac bc abc

 




My Personal Notes arrow_drop_up

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : itsvinayak

Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.