# Print all possible strings that can be made by placing spaces

• Difficulty Level : Medium
• Last Updated : 15 Jul, 2022

Given a string you need to print all possible strings that can be made by placing spaces (zero or one) in between them

Examples :

```Input :  str[] = "ABC"
Output : ABC
AB C
A BC
A B C

Input : str[] = "ABCD"
Output : ABCD
A BCD
AB CD
A B CD
ABC D
A BC D
AB C D
A B C D```

If we take a  closer look, we can notice that this problem boils down to Power Set problem. We basically need to generate all subsets where every element is a different space.

Implementation:

## C++

 `// C++ program to print all strings that can be` `// made by placing spaces` `#include ` `using` `namespace` `std;`   `void` `printSubsequences(string str)` `{` `    ``int` `n = str.length();` `    ``unsigned ``int` `opsize = ``pow``(2, n - 1);`   `    ``for` `(``int` `counter = 0; counter < opsize; counter++) {` `        ``for` `(``int` `j = 0; j < n; j++) {`   `            ``cout << str[j];` `            ``if` `(counter & (1 << j))` `                ``cout << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `// Driver code` `int` `main()` `{` `    ``string str = ``"ABC"``;` `    ``printSubsequences(str);` `    ``return` `0;` `}`

## Java

 `// Java program to print all strings that can be` `// made by placing spaces` `import` `java.util.*;` `class` `GFG` `{` `static` `void` `printSubsequences(String s)` `{` `    ``char``[] str= s.toCharArray();` `    ``int` `n = str.length;` `    ``int` `opsize = (``int``)(Math.pow(``2``, n - ``1``));`   `    ``for` `(``int` `counter = ``0``; counter < opsize; counter++) {` `        ``for` `(``int` `j = ``0``; j < n; j++) {`   `            ``System.out.print(str[j]);` `            ``if` `((counter & (``1` `<< j)) > ``0``)` `                ``System.out.print(``" "``);` `        ``}` `        ``System.out.println();` `    ``}` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``String str = ``"AB"``;` `    ``printSubsequences(str);` `}` `}`   `/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python 3 program to print all strings ` `# that can be made by placing spaces` `from` `math ``import` `pow`   `def` `printSubsequences(``str``):` `    ``n ``=` `len``(``str``)` `    ``opsize ``=` `int``(``pow``(``2``, n ``-` `1``))`   `    ``for` `counter ``in` `range``(opsize):` `        ``for` `j ``in` `range``(n):` `            ``print``(``str``[j], end ``=` `"")` `            ``if` `(counter & (``1` `<< j)):` `                ``print``(``" "``, end ``=` `"")`   `        ``print``(``"\n"``, end ``=` `"")`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    ``str` `=` `"ABC"` `    ``printSubsequences(``str``)`   `# This code is contributed by` `# Sanjit_Prasad`

## C#

 `// C# program to print all strings` `// that can be made by placing spaces` `using` `System;`   `class` `GFG {` `    `  `    ``// Function to print all subsequences` `    ``static` `void` `printSubsequences(String s)` `    ``{` `        ``char``[] str= s.ToCharArray();` `        ``int` `n = str.Length;` `        ``int` `opsize = (``int``)(Math.Pow(2, n - 1));` `    `  `        ``for` `(``int` `counter = 0; counter < opsize;` `                                     ``counter++) ` `        ``{` `            ``for` `(``int` `j = 0; j < n; j++) ` `            ``{` `                ``Console.Write(str[j]);` `                `  `                ``if` `((counter & (1 << j)) > 0)` `                    ``Console.Write(``" "``);` `            ``}` `            ``Console.WriteLine();` `        ``}` `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``String str = ``"ABC"``;` `        ``printSubsequences(str);` `    ``}` `}`   `// This code is contributed by shiv_bhakt.`

## PHP

 ``

## Javascript

 ``

Output

```ABC
A BC
AB C
A B C```

Time complexity : O(n*2n-1
Auxiliary Space : O(1)