Agregar n strings binarias

Dadas n strings binarias, devuelva su suma (también una string binaria).

Ejemplos:  

Input:  arr[] = ["11", "1"]
Output: "100"

Input : arr[] = ["1", "10", "11"]
Output : "110" 

Algoritmo 

  1. Inicialice el ‘resultado’ como una string vacía. 
  2. Atraviese la entrada de i = 0 a n-1.
  3. Para cada i, agregue arr[i] al ‘resultado’. ¿Cómo agregar ‘resultado’ y arr[i]? Comience desde los últimos caracteres de las dos strings y calcule la suma de dígitos uno por uno. Si la suma se vuelve más de 1, entonces almacene el acarreo para el siguiente dígito. Haga esta suma como el ‘resultado’.
  4. El valor de ‘resultado’ después de atravesar toda la entrada es la respuesta final.  

C++

// 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;
}

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

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

Javascript

<script>
 
// Javascript program to add n binary strings
 
// This function adds two binary strings and return
// result as a third string
function 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 strings
function addBinary(arr, n)
{
    var result = "";
    for (var i = 0; i < n; i++)
        result = addBinaryUtil(result, arr[i]);
    return result;
}
 
// Driver program
var arr = ["1", "10", "11"];
var n = arr.length;
document.write( addBinary(arr, n));
 
</script>
Producción: 

110

 

Complejidad temporal : O(n) 
Espacio auxiliar : O(n)

Publicación traducida automáticamente

Artículo escrito por aganjali10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *