Open In App

Count permutations possible by replacing ‘?’ characters in a Binary String

Improve
Improve
Like Article
Like
Save
Share
Report

Given a string S consisting of characters 0, 1, and ‘?’, the task is to count all possible combinations of the binary string formed by replacing ‘?’ by 0 or 1.

Examples:

Input: S = “0100?110”
Output: 2
Explanation: Replacing each ‘?’s with ‘1’ and ‘0’, the count of such strings formed will be equal to “01001110” and “01000110”. Therefore, the total count of such strings formed is 2.

Input: S = “00?0?111”
Output: 4

Approach: The given problem can be solved based on the following observations:

  • Since each ‘?’ can be replaced by ‘0’ or ‘1’, two possible choices exist for every ‘?’ character.
  • Now, the task reduces to finding the count of ‘?’s, say count.
  • Therefore, the total number of different strings that can be formed is 2count.

Follow the steps below to solve the problem:

Below is the implementation of the above approach:

C++14




#include <bits/stdc++.h>
 
using namespace std;
 
//Function to count all possible
//permutations of the string s
void countPermutations(string s){
 
    //Stores frequency of the
    //character '?'
    int count = 0;
 
    //Traverse the string
    for (char i:s){
        if (i == '?')
            count += 1;
      }
 
    //Print the answer
    cout<<pow(2,count);
}
 
//Driver Code
int main()
{
  //Given string S
  string s = "0100?110";
 
  //Function call to count
  //the number of permutations
  countPermutations(s);
 
  return 0;
}


Java




// Java program for the above approach
class GFG{
 
// Function to count all possible
// permutations of the string s
static void countPermutations(String s)
{
 
    // Stores frequency of the
    // character '?'
    int count = 0;
 
    // Traverse the string
    for (char i : s.toCharArray())
    {
        if (i == '?')
            count += 1;
      }
 
    // Print the answer
    System.out.print((int)Math.pow(2,count));
}
 
 
// Driver Code
public static void main(String[] args)
{
     
    // Given string S
  String s = "0100?110";
 
  // Function call to count
  // the number of permutations
  countPermutations(s);
}
}
 
// This code is contributed by code_hunt.


Python3




# Python3 program for the above approach
 
# Function to count all possible
# permutations of the string s
def countPermutations(s):
 
    # Stores frequency of the
    # character '?'
    count = 0
 
    # Traverse the string
    for i in s:
        if i == '?':
 
            # Increment count
            count += 1
 
    # Print the answer
    print(2**count)
 
# Driver Code
 
# Given string S
s = "0100?110"
 
# Function call to count
# the number of permutations
countPermutations(s)
 
# This code is contribute by mohit kumar 29.


C#




// C# program for above approach
using System;
 
public class GFG
{
   
// Function to count all possible
// permutations of the string s
static void countPermutations(string s)
{
 
    // Stores frequency of the
    // character '?'
    int count = 0;
 
    // Traverse the string
    foreach (char i in s)
    {
        if (i == '?')
            count += 1;
      }
 
    // Print the answer
    Console.WriteLine(Math.Pow(2,count));
}
 
// Driver code
public static void Main(String[] args)
{
   
    // Given string S
  string s = "0100?110";
 
  // Function call to count
  // the number of permutations
  countPermutations(s);
}
}
 
// This code is contributed by splevel62.


Javascript




<script>
 
 
//Function to count all possible
//permutations of the string s
function countPermutations(s){
 
    //Stores frequency of the
    //character '?'
    var count = 0;
 
    //Traverse the string
    for(var i =0; i< s.length; i++)
    {
        if (s[i] == '?')
            count += 1;
    }
 
    //Print the answer
    document.write( Math.pow(2,count));
}
 
//Driver Code
 
//Given string S
var s = "0100?110";
 
//Function call to count
//the number of permutations
countPermutations(s);
 
 
</script>


Output: 

2

 

Time Complexity: O(N)
Auxiliary Space: O(1)



Last Updated : 27 Apr, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads