Given two binary strings, return their sum (also a binary string).
Example:
Input: a = "11", b = "1" Output: "100"
We strongly recommend you to minimize your browser and try this yourself first
The idea is to start from last characters of two strings and compute digit sum one by one. If sum becomes more than 1, then store carry for next digits.
C++
// C++ program to add two binary strings #include<bits/stdc++.h> using namespace std; // This function adds two binary strings and return // result as a third string string addBinary(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) { // Comput 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; } // Driver program int main() { string a = "1101" , b= "100" ; cout << addBinary(a, b) << endl; return 0; } |
Java
// java program to add // two binary strings public class GFG { // This function adds two // binary strings and return // result as a third string static String addBinary(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 ) { // Comput 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 = ( char )(s % 2 + '0' ) + result; // Compute carry s /= 2 ; // Move to next digits i--; j--; } return result; } //Driver code public static void main(String args[]) { String a = "1101" , b= "100" ; System.out.print(addBinary(a, b)); } } // This code is contributed by Sam007. |
Python3
# Python Solution for above problem: # This function adds two binary # strings return the resulting string def add_binary_nums(x, y): max_len = max ( len (x), len (y)) x = x.zfill(max_len) y = y.zfill(max_len) # initialize the result result = '' # initialize the carry carry = 0 # Traverse the string for i in range (max_len - 1 , - 1 , - 1 ): r = carry r + = 1 if x[i] = = '1' else 0 r + = 1 if y[i] = = '1' else 0 result = ( '1' if r % 2 = = 1 else '0' ) + result carry = 0 if r < 2 else 1 # Compute the carry. if carry ! = 0 : result = '1' + result return result.zfill(max_len) # Driver code print (add_binary_nums( '1101' , '100' )) # This code is contributed # by Anand Khatri |
C#
// C# program to add // two binary strings using System; class GFG { // This function adds two // binary strings and return // result as a third string static string addBinary( 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) { // Comput 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; } // Driver Code public static void Main() { string a = "1101" , b= "100" ; Console.Write( addBinary(a, b)); } } // This code is contributed by Sam007 |
PHP
<?php // PHP program to add two binary strings // This function adds two binary strings // and return result as a third string function addBinary( $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) { // Comput 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 ; } // Driver Code $a = "1101" ; $b = "100" ; echo addBinary( $a , $b ); // This code is contributed by mits ?> |
Output:
10001
Thanks to Gaurav Ahirwar for suggesting above solution. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
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.