Leetcode - suma binaria (67)

Descripción Título: Dados dos cadena binaria, y el regreso a su (expresado en binario). Y una cadena de entrada no vacío contiene sólo numérica  1 y  0.

Un pensamiento: Usar funciones integradas pitón

1  clase Solución:
 2      def addBinary (sí, a: str, b: str) -> str:
 3          retorno  ' {0: b} ' .formato (int (a, 2) + int (b, 2)) # int ( x , de base = 10 ) 

Sobre algunos de los formato de uso de referencia https://www.cnblogs.com/benric/p/4965224.html

Pensar dos: Establecer indicador que indica si un acarreo.

. 1  clase Solución:
 2      DEF addBinary (Self, A: STR, B: STR) -> STR:
 . 3          En Flag = 0
 . 4          n- = max (len (A), Len (B))
 . 5          A, B = a.zfill ( n-), b.zfill (n-)     # zfill desde el extremo izquierdo se rellena con ceros hasta que una serie de n- 
6.          ANS = '' 
7.          para I en la gama (1, len (a.) hecho +1 ):
 . 8              SI a [-i ] == '1 ' :
 . 9                  . En la bandera 1 = +
 10 IF B [-i] == ' 1. ' :
             . 11                  . En la bandera + 1 =
 12 es              SI En la bandera == 2% 1:.     # En bandera indica un acarreo dígitos 
13 es                  ANS = + ' 1. ' 
14              el otro : 
 15                  ANS + = ' 0 ' 
16              En Flag // = 2
 17.          SI En la bandera == 1. :
 18 es              ANS = + ' 1. ' 
19.          retorno ANS [-1 :: -. 1]     # salida inversa

Tres ideas : ningún cálculo Además se calcula en bits.

           Como se muestra, no el bit de acarreo del sumador correspondientes a la operación XOR sencilla (cuando el valor de A y B no son simultáneamente 1)

 

     Como se muestra, el arrastre generado por cálculo. Por ejemplo uno, es decir, la caja verde antes de añadir el arrastre generado por el cuadro de color azul se añade a la bit correspondiente

 

 Loop no llevará en el sumador sumando el resultado generado, hasta un acarreo no se genera hasta el momento (es decir, cuando carry = 0)

. 1  clase Solución:
 2      DEF addBinary (Self, A: STR, B: STR) -> STR:
 . 3          X, Y = int (A, 2), int (B, 2 )
 4.          El tiempo Y:
 5.              ANS = x ^ y     # operación XOR 
6.              con Carry = (X & y) 1 <<.     # fase e izquierda 
7.              X, y = ANS, con Carry
 8.          retorno bin (X) [2:]     # porque las salidas binarias son 0bxxxx

 

Supongo que te gusta

Origin www.cnblogs.com/shawn-young/p/12601583.html
Recomendado
Clasificación