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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++

 `// 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); ` `    ``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 ` `?> `

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.