Add n binary strings - GeeksforGeeks

24 May, 2021
Given n binary strings, return their sum (also a binary string).
Examples:  
Input:  arr[] = ["11", "1"]
Output: "100"

Input : arr[] = ["1", "10", "11"]
Output : "110" 
Algorithm 
Initialize the ‘result’ as an empty string. Traverse the input from i = 0 to n-1.For each i, add arr[i] to the ‘result’. How to add ‘result’ and arr[i]? Start from the last characters of the two strings and compute the digit sum one by one. If the sum becomes more than 1, then store carry for the next digit. Make this sum as the ‘result’.The value of ‘result’ after traversing the entire input is the final answer.  
Initialize the ‘result’ as an empty string. 
Traverse the input from i = 0 to n-1.
For each i, add arr[i] to the ‘result’. How to add ‘result’ and arr[i]? Start from the last characters of the two strings and compute the digit sum one by one. If the sum becomes more than 1, then store carry for the next digit. Make this sum as the ‘result’.
The value of ‘result’ after traversing the entire input is the final answer.  
C++
Java
Python3
C#
PHP
Javascript
// C++ program to add n binary strings#include <bits/stdc++.h>using namespace std; // This function adds two binary strings and return// result as a third stringstring addBinaryUtil(string a, string b){    string result = ""; // Initialize result    int s = 0; // Initialize digit sum     // Traverse both strings starting from last    // characters    int i = a.size() - 1, j = b.size() - 1;    while (i >= 0 || j >= 0 || s == 1) {         // Compute sum of last digits and carry        s += ((i >= 0) ? a[i] - '0' : 0);        s += ((j >= 0) ? b[j] - '0' : 0);         // If current digit sum is 1 or 3,        // add 1 to result        result = char(s % 2 + '0') + result;         // Compute carry        s /= 2;         // Move to next digits        i--;        j--;    }    return result;} // function to add n binary stringsstring addBinary(string arr[], int n){    string result = "";    for (int i = 0; i < n; i++)        result = addBinaryUtil(result, arr[i]);    return result;} // Driver programint main(){    string arr[] = { "1", "10", "11" };    int n = sizeof(arr) / sizeof(arr[0]);    cout << addBinary(arr, n) << endl;    return 0;}
// Java program to add n binary stringsclass GFG{     // This function adds two binary    // strings and return result as    // a third string    static String addBinaryUtil(String a, String b)    {        String result = ""; // Initialize result        int s = 0; // Initialize digit sum         // Traverse both strings starting        // from last characters        int i = a.length() - 1, j = b.length() - 1;        while (i >= 0 || j >= 0 || s == 1)        {             // Compute sum of last digits and carry            s += ((i >= 0) ? a.charAt(i) - '0' : 0);            s += ((j >= 0) ? b.charAt(j) - '0' : 0);             // If current digit sum is 1 or 3,            // add 1 to result            result = s % 2 + result;             // Compute carry            s /= 2;             // Move to next digits            i--;            j--;        }        return result;    }     // function to add n binary strings    static String addBinary(String arr[], int n)    {        String result = "";        for (int i = 0; i < n; i++)        {            result = addBinaryUtil(result, arr[i]);        }        return result;    }     // Driver code    public static void main(String[] args)    {        String arr[] = {"1", "10", "11"};        int n = arr.length;        System.out.println(addBinary(arr, n));    }} // This code is contributed by Rajput-JI
# Python3 program to add n binary strings # This function adds two binary strings and# return result as a third stringdef addBinaryUtil(a, b):         result = ""; # Initialize result    s = 0;       # Initialize digit sum     # Traverse both strings    # starting from last characters    i = len(a) - 1;    j = len(b) - 1;    while (i >= 0 or j >= 0 or s == 1):         # Compute sum of last digits and carry        s += (ord(a[i]) - ord('0')) if(i >= 0) else 0;        s += (ord(b[j]) - ord('0')) if(j >= 0) else 0;         # If current digit sum is 1 or 3,        # add 1 to result        result = chr(s % 2 + ord('0')) + result;         # Compute carry        s //= 2;         # Move to next digits        i -= 1;        j -= 1;     return result; # function to add n binary stringsdef addBinary(arr, n):    result = "";    for i in range(n):        result = addBinaryUtil(result, arr[i]);    return result; # Driver codearr = ["1", "10", "11"];n = len(arr);print(addBinary(arr, n));     # This code is contributed by mits
// C# program to add n binary stringsusing System; class GFG{         // This function adds two binary    // strings and return result as    // a third string    static String addBinaryUtil(String a,                                String b)    {        // Initialize result        String result = "";                 // Initialize digit sum        int s = 0;         // Traverse both strings starting        // from last characters        int i = a.Length - 1, j = b.Length - 1;        while (i >= 0 || j >= 0 || s == 1)        {             // Compute sum of last digits and carry            s += ((i >= 0) ? a[i] - '0' : 0);            s += ((j >= 0) ? b[j] - '0' : 0);             // If current digit sum is 1 or 3,            // add 1 to result            result = s % 2 + result;             // Compute carry            s /= 2;             // Move to next digits            i--;            j--;        }        return result;    }     // function to add n binary strings    static String addBinary(String []arr, int n)    {        String result = "";        for (int i = 0; i < n; i++)        {            result = addBinaryUtil(result, arr[i]);        }        return result;    }     // Driver code    public static void Main(String[] args)    {        String []arr = {"1", "10", "11"};        int n = arr.Length;        Console.WriteLine(addBinary(arr, n));    }} // This code is contributed by 29AjayKumar
<?php// PHP program to add n binary strings // This function adds two binary strings and return// result as a third stringfunction addBinaryUtil($a, $b){    $result = ""; // Initialize result    $s = 0; // Initialize digit sum     // Traverse both strings starting from last    // characters    $i = strlen($a) - 1;    $j = strlen($b) - 1;    while ($i >= 0 || $j >= 0 || $s == 1)    {         // Compute sum of last digits and carry        $s += (($i >= 0) ? ord($a[$i]) - ord('0') : 0);        $s += (($j >= 0) ? ord($b[$j]) - ord('0') : 0);         // If current digit sum is 1 or 3,        // add 1 to result        $result = chr($s % 2 + ord('0')).$result;         // Compute carry        $s =(int)($s/2);         // Move to next digits        $i--;        $j--;    }    return $result;} // function to add n binary stringsfunction addBinary($arr, $n){    $result = "";    for ($i = 0; $i < $n; $i++)        $result = addBinaryUtil($result, $arr[$i]);    return $result;} // Driver code    $arr = array( "1", "10", "11" );    $n = count($arr);    echo addBinary($arr, $n)."\n";     // This code is contributed by mits?>
<script> // Javascript program to add n binary strings // This function adds two binary strings and return// result as a third stringfunction addBinaryUtil(a, b){    var result = ""; // Initialize result    var s = 0; // Initialize digit sum     // Traverse both strings starting from last    // characters    var i = a.length - 1, j = b.length - 1;    while (i >= 0 || j >= 0 || s == 1) {         // Compute sum of last digits and carry        s += ((i >= 0) ? a.charCodeAt(i) - '0'.charCodeAt(0) : 0);        s += ((j >= 0) ? b.charCodeAt(j) - '0'.charCodeAt(0) : 0);         // If current digit sum is 1 or 3,        // add 1 to result        result = String.fromCharCode((s % 2 ==1 ?1:0) +                                     '0'.charCodeAt(0)) + result;         // Compute carry        s = parseInt(s/2);         // Move to next digits        i--;        j--;    }    return result;} // function to add n binary stringsfunction addBinary(arr, n){    var result = "";    for (var i = 0; i < n; i++)        result = addBinaryUtil(result, arr[i]);    return result;} // Driver programvar arr = ["1", "10", "11"];var n = arr.length;document.write( addBinary(arr, n)); </script>
110
 
Rajput-Ji
29AjayKumar
Mithun Kumar
shubham_singh
rrrtnx
binary-string
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Check for Balanced Brackets in an expression (well-formedness) using Stack
Python program to check if a string is palindrome or not
KMP Algorithm for Pattern Searching
Different methods to reverse a string in C/C++
Convert string to char array in C++
Longest Palindromic Substring | Set 1
Array of Strings in C++ (5 Different Ways to Create)
Caesar Cipher in Cryptography
Check whether two strings are anagram of each other
Reverse words in a given string