Given a binary string of length, at least two. We need to check if it is possible to rearrange a binary string such that there are alternate 0s and 1s. If possible, then the output is YES, otherwise the output is NO.
Examples:
Input : 1011
Output : NO
We can’t rearrange the string such that it has alternate 0s and 1s.Input : 1100
Output : YES
There are exactly two ways to rearrange the string, and they are 0101 or 1010 .
We can place all 0’s in an even position and all 1’s in an odd position or we can place all 0’s in an odd position and all 1’s in an even position. If the length of the string is even, then to satisfy the given condition, the count of 1’s and 0’s must be equal. If the length of the string is odd then to satisfy the given condition, the absolute difference in the count
of 1’s and 0’s must be one.
Below is the implementation of the above approach:
C++
// CPP program to check if we can rearrange a // string such that it has alternate 0s and 1s. #include <bits/stdc++.h> using namespace std; // function to check the binary string bool is_possible(string s) { // length of string int l = s.length(); int one = 0, zero = 0; for ( int i = 0; i < l; i++) { // count zero's if (s[i] == '0' ) zero++; // count one's else one++; } // if length is even if (l % 2 == 0) return (one == zero); // if length is odd else return ( abs (one - zero) == 1); } // Driver code int main() { string s = "100110" ; if (is_possible(s)) cout << "Yes" ; else cout << "No" ; return 0; } |
Java
// Java program to check if we can rearrange a // string such that it has alternate 0s and 1s. import java.lang.Math; public class GfG{ // function to check the binary string public static boolean is_possible(String s) { // length of string int l = s.length(); int one = 0 , zero = 0 ; for ( int i = 0 ; i < l; i++) { // count zero's if (s.charAt(i) == '0' ) zero++; // count one's else one++; } // if length is even if (l % 2 == 0 ) return (one == zero); // if length is odd else return (Math.abs(one - zero) == 1 ); } public static void main(String []args){ String s = "100110" ; if (is_possible(s)) System.out.println( "Yes" ); else System.out.println( "No" ); } } // This code is contributed by Rituraj Jain |
Python 3
# Python3 program to check if # we can rearrange a # string such that it has alternate # 0s and 1s. # function to check the binary string def is_possible(s): # length of string l = len (s) one = 0 zero = 0 for i in range ( 0 ,l) : # count zero's if (s[i] = = '0' ): zero + = 1 # count one's else : one + = 1 # if length is even if (l % 2 = = 0 ) : return (one = = zero) # if length is odd else : return ( abs (one - zero) = = 1 ) # Driver code if __name__ = = "__main__" : s = "100110" if (is_possible(s)): print ( "Yes" ) else : print ( "No" ) # This code is contributed by # ChitraNayal |
C#
// C# program to check if we can rearrange a // string such that it has alternate 0s and 1s. using System; class GfG { // function to check the binary string public static bool is_possible(String s) { // length of string int l = s.Length; int one = 0, zero = 0; for ( int i = 0; i < l; i++) { // count zero's if (s[i] == '0' ) zero++; // count one's else one++; } // if length is even if (l % 2 == 0) return (one == zero); // if length is odd else return (Math.Abs(one - zero) == 1); } // Driver code public static void Main(String []args) { String s = "100110" ; if (is_possible(s)) Console.WriteLine( "Yes" ); else Console.WriteLine( "No" ); } } // This code is contributed by Rajput-Ji |
PHP
<?php // PHP program to check if we can rearrange a // string such that it has alternate 0s and 1s. // function to check the binary string function is_possible( $s ) { // length of string $l = strlen ( $s ); $one = 0; $zero = 0; for ( $i = 0; $i < $l ; $i ++) { // count zero's if ( $s [ $i ] == '0' ) $zero ++; // count one's else $one ++; } // if length is even if ( $l % 2 == 0) return ( $one == $zero ); // if length is odd else return ( abs ( $one - $zero ) == 1); } // Driver code $s = "100110" ; if (is_possible( $s )) echo ( "Yes" ); else echo ( "No" ); // This code is contributed by // Shivi_Aggarwal ?> |
Javascript
<script> // Javascript program to check if we can rearrange a // string such that it has alternate 0s and 1s. // function to check the binary string function is_possible(s) { // length of string let l = s.length; let one = 0, zero = 0; for (let i = 0; i < l; i++) { // count zero's if (s[i] == '0 ') zero++; // count one' s else one++; } // if length is even if (l % 2 == 0) return (one == zero); // if length is odd else return (Math.abs(one - zero) == 1); } let s = "100110" ; if (is_possible(s)) document.write( "Yes" ); else document.write( "No" ); // This code is contributed by avanitrachhadiya2155 </script> |
Yes
Time Complexity: O(l), where l is the length of the binary string.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!