Check whether a binary string can be formed by concatenating given N numbers sequentially
Given a sequence of ‘n’ numbers (without leading zeros), the task is to find whether it is possible to create a binary string by concatenating these numbers sequentially.
If possible, then print the binary string formed, otherwise print “-1”.
Examples :
Input: arr[] = {10, 11, 1, 0, 10}
Output: 10111010
All the numbers contain the digits ‘1’ and ‘0’ only. So it is possible to form a binary string by concatenating
these numbers sequentially which is 10111010.
Input: arr[] = {1, 2, 11, 10}
Output: -1
One of the numbers contains the digit ‘2’ which cannot be a part of any binary string.
So, the output is -1.
Approach: The main observation is that we can only concatenate those numbers which contain the digits ‘1’ and ‘0’ only. Otherwise, it is impossible to form a binary string.
Below is the implementation of the above approach :
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function that returns false if // the number passed as argument contains // digit(s) other than '0' or '1' bool isBinary( int n) { while (n != 0) { int temp = n % 10; if (temp != 0 && temp != 1) { return false ; } n = n / 10; } return true ; } //Function that checks whether the //binary string can be formed or not void formBinaryStr( int n, int a[]) { bool flag = true ; // Empty string for storing // the binary number string s = "" ; for ( int i = 0; i < n; i++) { // check if a[i] can be a // part of the binary string if (isBinary(a[i])) // Conversion of int into string s += to_string(a[i]); else { // if a[i] can't be a part // then break the loop flag = false ; break ; } } // possible to create binary string if (flag) cout << s << "\n" ; // impossible to create binary string else cout << "-1\n" ; } // Driver code int main() { int a[] = { 10, 1, 0, 11, 10 }; int N = sizeof (a) / sizeof (a[0]); formBinaryStr(N, a); return 0; } |
Java
// Java implementation of the approach import java.util.*; class Solution { // Function that returns false if // the number passed as argument contains // digit(s) other than '0' or '1' static boolean isBinary( int n) { while (n != 0 ) { int temp = n % 10 ; if (temp != 0 && temp != 1 ) { return false ; } n = n / 10 ; } return true ; } //Function that checks whether the //binary String can be formed or not static void formBinaryStr( int n, int a[]) { boolean flag = true ; // Empty String for storing // the binary number String s = "" ; for ( int i = 0 ; i < n; i++) { // check if a[i] can be a // part of the binary String if (isBinary(a[i])) // Conversion of int into String s += "" +a[i]; else { // if a[i] can't be a part // then break the loop flag = false ; break ; } } // possible to create binary String if (flag) System.out.print( s + "\n" ); // impossible to create binary String else System.out.print( "-1\n" ); } // Driver code public static void main(String args[]) { int a[] = { 10 , 1 , 0 , 11 , 10 }; int N = a.length; formBinaryStr(N, a); } } //contributed by Arnab Kundu |
Python3
# Python3 implementation of the approach # Function that returns false if the # number passed as argument contains # digit(s) other than '0' or '1' def isBinary(n): while n ! = 0 : temp = n % 10 if temp ! = 0 and temp ! = 1 : return False n = n / / 10 return True # Function that checks whether the # binary string can be formed or not def formBinaryStr(n, a): flag = True # Empty string for storing # the binary number s = "" for i in range ( 0 , n): # check if a[i] can be a # part of the binary string if isBinary(a[i]) = = True : # Conversion of int into string s + = str (a[i]) else : # if a[i] can't be a part # then break the loop flag = False break # possible to create binary string if flag = = True : print (s) # impossible to create binary string else : cout << "-1\n" # Driver code if __name__ = = "__main__" : a = [ 10 , 1 , 0 , 11 , 10 ] N = len (a) formBinaryStr(N, a) # This code is contributed by Rituraj Jain |
C#
// C# implementation of the approach using System; public class Solution { // Function that returns false if // the number passed as argument contains // digit(s) other than '0' or '1' public static bool isBinary( int n) { while (n != 0) { int temp = n % 10; if (temp != 0 && temp != 1) { return false ; } n = n / 10; } return true ; } //Function that checks whether the //binary String can be formed or not public static void formBinaryStr( int n, int [] a) { bool flag = true ; // Empty String for storing // the binary number string s = "" ; for ( int i = 0; i < n; i++) { // check if a[i] can be a // part of the binary String if (isBinary(a[i])) { // Conversion of int into String s += "" + a[i]; } else { // if a[i] can't be a part // then break the loop flag = false ; break ; } } // possible to create binary String if (flag) { Console.Write(s + "\n" ); } // impossible to create binary String else { Console.Write( "-1\n" ); } } // Driver code public static void Main( string [] args) { int [] a = new int [] {10, 1, 0, 11, 10}; int N = a.Length; formBinaryStr(N, a); } } // This code is contributed by Shrikant13 |
PHP
<?php // PHP implementation of the approach // Function that returns false if the // number passed as argument contains // digit(s) other than '0' or '1' function isBinary( $n ) { while ( $n != 0) { $temp = $n % 10; if ( $temp != 0 && $temp != 1) { return false; } $n = intval ( $n / 10); } return true; } // Function that checks whether the // binary string can be formed or not function formBinaryStr( $n , & $a ) { $flag = true; // Empty string for storing // the binary number $s = "" ; for ( $i = 0; $i < $n ; $i ++) { // check if a[i] can be a // part of the binary string if (isBinary( $a [ $i ])) // Conversion of int into string $s = $s . strval ( $a [ $i ]); else { // if a[i] can't be a part // then break the loop $flag = false; break ; } } // possible to create binary string if ( $flag ) echo $s . "\n" ; // impossible to create binary string else echo "-1\n" ; } // Driver code $a = array ( 10, 1, 0, 11, 10 ); $N = sizeof( $a ) / sizeof( $a [0]); formBinaryStr( $N , $a ); // This code is contributed by ita_c ?> |
10101110
Recommended Posts:
- Check whether given string can be generated after concatenating given strings
- N-th character in the string made by concatenating natural numbers
- Check whether second string can be formed from characters of first string
- Check if a string can be formed from another string using given constraints
- Check if given string can be formed by two other strings or their permutations
- Pairs of strings which on concatenating contains each character of "string"
- Check if the given string of words can be formed from words present in the dictionary
- Python | Check if a given string is binary string or not
- Lexicographically smallest string obtained after concatenating array
- Check if all the 1's in a binary string are equidistant or not
- Check divisibility of binary string by 2^k
- Check if a binary string contains consecutive same or not
- Find the starting indices of the substrings in string (S) which is made by concatenating all words from a list(L)
- Check if a binary string has a 0 between 1s or not | Set 1 (General approach)
- Check if it is possible to rearrange a binary string with alternate 0s and 1s
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.