# Count all possible strings that can be generated by placing spaces

Given a string **S**, the task is to count all possible strings that can be generated by placing spaces between any pair of adjacent characters of the string.

**Examples:**

Input:S = “AB”Output:2Explanation:All possible strings are { “A B”, “AB”}.

Input:S = “ABC”Output:4Explanation:All possible strings are {“A BC”, “AB C”, “A B C”, “ABC”}

**Approach:** The problem can be solved by assuming the spaces between adjacent pair of characters of the string as binary bits. Generally, if the length of the string is **L**, then there **L – 1** places to fill by spaces.

**Illustration:**

S = “ABCD”

Possible places for spaces are:

- Between “A” and “B”
- Between “B” and “C”
- Between “C” and “D”
Length of the string = 4

Possible spaces for spaces = 3 = 4 – 1

Assuming each place to be a binary bit, the total number of possible combinations are:

- 000 -> “ABCD”
- 001 -> “ABC D”
- 010 -> “AB CD”
- 011 -> “AB C D”
- 100 -> “A BCD”
- 101 -> “A BC D”
- 110 -> “A B CD”
- 111 -> “A B C D”
Hence, 8 possible strings can be obtained for a string of length 4.

Therefore, total count of strings = 2^{L – 1}

Below is the implementation of the above idea:

## C++

`// C++ Program to implement` `// the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to count the number of strings` `// that can be generated by placing spaces` `// between pair of adjacent characters` `long` `long` `int` `countNumberOfStrings(string s)` `{` ` ` `// Length of the string` ` ` `int` `length = s.length();` ` ` `// Count of positions for spaces` ` ` `int` `n = length - 1;` ` ` `// Count of possible strings` ` ` `long` `long` `int` `count = ` `pow` `(2, n);` ` ` `return` `count;` `}` `// Driver Code` `int` `main()` `{` ` ` `string S = ` `"ABCD"` `;` ` ` `cout << countNumberOfStrings(S);` ` ` `return` `0;` `}` |

## C

`// C program to implement` `// the above approach` `#include <math.h>` `#include <stdio.h>` `#include <string.h>` `// Function to count the number of strings` `// that can be generated by placing spaces` `// between pair of adjacent characters` `long` `long` `int` `countNumberOfStrings(` `char` `* s)` `{` ` ` ` ` `// Length of the string` ` ` `int` `length = ` `strlen` `(s);` ` ` `// Count of positions for spaces` ` ` `int` `n = length - 1;` ` ` `// Count of possible strings` ` ` `long` `long` `int` `count = ` `pow` `(2, n);` ` ` `return` `count;` `}` `// Driver Code` `int` `main()` `{` ` ` `char` `S[] = ` `"ABCD"` `;` ` ` `printf` `(` `"%lld"` `, countNumberOfStrings(S));` ` ` `return` `0;` `}` `// This code is contributed by single__loop` |

## Java

`// Java program to implement` `// the above approach` `import` `java.io.*;` `class` `GFG{` ` ` `// Function to count the number of strings` `// that can be generated by placing spaces` `// between pair of adjacent characters` `static` `long` `countNumberOfStrings(String s)` `{` ` ` ` ` `// Count of positions for spaces` ` ` `int` `n = s.length() - ` `1` `;` ` ` ` ` `// Count of possible strings` ` ` `long` `count = (` `long` `)(Math.pow(` `2` `, n));` ` ` `return` `count;` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `String S = ` `"ABCD"` `;` ` ` ` ` `System.out.println(countNumberOfStrings(S));` `}` `}` `// This code is contributed by single__loop` |

## Python3

`# Python3 program to implement` `# the above approach` `# Function to count the number of strings` `# that can be generated by placing spaces` `# between pair of adjacent characters` `def` `countNumberOfStrings(s):` ` ` ` ` `# Length of the string` ` ` `length ` `=` `len` `(s)` ` ` ` ` `# Count of positions for spaces` ` ` `n ` `=` `length ` `-` `1` ` ` ` ` `# Count of possible strings` ` ` `count ` `=` `2` `*` `*` `n` ` ` `return` `count` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `S ` `=` `"ABCD"` ` ` ` ` `print` `(countNumberOfStrings(S))` ` ` `# This code is contributed by AnkThon` |

## C#

`// C# program to implement` `// the above approach` `using` `System;` `class` `GFG{` `// Function to count the number of strings` `// that can be generated by placing spaces` `// between pair of adjacent characters` `static` `long` `countNumberOfStrings(String s)` `{` ` ` ` ` `// Count of positions for spaces` ` ` `int` `n = s.Length - 1;` ` ` ` ` `// Count of possible strings` ` ` `long` `count = (` `long` `)(Math.Pow(2, n));` ` ` `return` `count;` `}` `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` ` ` `string` `S = ` `"ABCD"` `;` ` ` ` ` `Console.WriteLine(countNumberOfStrings(S));` `}` `}` `// This code is contributed by AnkThon` |

## Javascript

`<script>` `// JavaScript program for above approach` `// Function to count the number of strings` `// that can be generated by placing spaces` `// between pair of adjacent characters` `function` `countNumberOfStrings(s)` `{` ` ` ` ` `// Count of positions for spaces` ` ` `let n = s.length - 1;` ` ` ` ` `// Count of possible strings` ` ` `let count = (Math.pow(2, n));` ` ` ` ` `return` `count;` `}` `// Driver Code` ` ` `let S = ` `"ABCD"` `;` ` ` `document.write(countNumberOfStrings(S));` ` ` ` ` `// This code is contributed by avijitmondal1998.` `</script>` |

**Output:**

8

**Time Complexity:** O(log (len – 1)), where **len** represents length of the given string.**Auxiliary Space:** O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.