Open In App

PHP Program to Count number of binary strings without consecutive 1’s

Last Updated : 10 Nov, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Write a PHP program for a given positive integer N, the task is to count all possible distinct binary strings of length N such that there are no consecutive 1s.

Examples:

Input: N = 2
Output: 3
Explanation: The 3 strings are 00, 01, 10

Input: N = 3
Output: 5
Explanation: The 5 strings are 000, 001, 010, 100, 101

PHP Program to Count a number of binary strings without consecutive 1’s using Dynamic Programming:

Let a[i] be the number of binary strings of length i that do not contain any two consecutive 1s and which end in 0. Similarly, let b[i] be the number of such strings which end in 1. We can append either 0 or 1 to a string ending in 0, but we can only append 0 to a string ending in 1. This yields the recurrence relation:

a[i] = a[i – 1] + b[i – 1]
b[i] = a[i – 1]

The base cases of above recurrence are a[1] = b[1] = 1. The total number of strings of length i is just a[i] + b[i].

Below is the implementation of the above approach:

PHP




<?php
// PHP program to count all distinct
// binary stringswithout two
// consecutive 1's
 
function countStrings($n)
{
    $a[$n] = 0;
    $b[$n] = 0;
    $a[0] = $b[0] = 1;
    for ($i = 1; $i < $n; $i++)
    {
        $a[$i] = $a[$i - 1] +
                $b[$i - 1];
        $b[$i] = $a[$i - 1];
    }
    return ($a[$n - 1] +
        $b[$n - 1])%1000000007;
}
 
    // Driver Code
    echo countStrings(3) ;
 
// This code is contributed by nitin mittal
?>


Output

5

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

Another method:

From the above method it is clear that we only want just previous value in the for loop which we can also do by replacing the array with the variable.

Below is the implementation of the above approach:

PHP




<?php
function countStrings($n) {
    $a = 1;
    $b = 1;
    for ($i = 1; $i < $n; $i++) {
        $temp = $a + $b;
        $b = $a;
        $a = $temp;
    }
    return ($a + $b) % 1000000007;
}
 
// Driver program to test the function
echo countStrings(3) . PHP_EOL;
?>


Output

5

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

Please refer complete article on Count number of binary strings without consecutive 1’s for more details!



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads