Add n binary strings

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

  1. Initialize the ‘result’ as an empty string
  2. Traverse the input from i = 0 to n-1
  3. 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 digit sum one by one. If sum becomes more than 1, then store carry for next digits. Make this sum as the ‘result’
  4. The value of ‘result’ after traversing the entire input is the final answer

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 string
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.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 strings
string addBinary(string arr[], int n)
{
    string result = "";
    for (int i = 0; i < n; i++)
        result = addBinaryUtil(result, arr[i]);
    return result;
}
  
// Driver program
int main()
{
    string arr[] = { "1", "10", "11" };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << addBinary(arr, n) << endl;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to add n binary strings
class 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to add n binary strings
  
# This function adds two binary strings and 
# return result as a third string
def 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 strings
def addBinary(arr, n):
    result = "";
    for i in range(n):
        result = addBinaryUtil(result, arr[i]);
    return result;
  
# Driver code
arr = ["1", "10", "11"];
n = len(arr);
print(addBinary(arr, n));
      
# This code is contributed by mits

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to add n binary strings 
using 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to add n binary strings
  
// This function adds two binary strings and return
// result as a third string
function 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 strings
function 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
?>

chevron_right


Output:

110


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.





Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.