Related Articles

• Difficulty Level : Easy
• Last Updated : 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

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 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’.
4. The value of ‘result’ after traversing the entire input is the final answer.

## C++

 `// C++ program to add n binary strings``#include ``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;``}`

## Java

 `// 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`

## Python3

 `# 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`

## C#

 `// 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`

## PHP

 `= 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``?>`

## Javascript

 ``
Output:
`110`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up