La concatenación de cadenas. Ese tema todavía está encendido. 43 problema de la sombra . Ejemplo,
"13" + "79" = "92"
Este problema no tiene ningún algoritmo, el estudio se relaciona con el funcionamiento de la cadena. Java y JS practicar un poco, existen algunas diferencias. Debido a la relación entre StringBuilder, así que los números en el interior de todos y cada resultado puede ser append en Java; JS hay una matriz en lugar de la función StringBuilder. Pero las dos lenguas se den cuenta de que la idea es la misma.
Tiempo de O (n)
Espacio O (n)
implementación de Java
1 clase Solution { 2 públicas addStrings de Cuerda (String num1, Cadena num2) { 3 int i = num1.length () - 1 ; 4 int j = num2.length () - 1 ; 5 int carry = 0 ; 6 StringBuilder sb = nuevo StringBuilder (); 7 , mientras que (i> = 0 || j> = 0 || carry == 1 ) { 8 int a = i> = 0? num1.charAt (i--) - '0': 0 ; 9 int b = j> = 0? num2.charAt (j--) - '0': 0 ; 10 int suma = a + b + carry; 11 sb.append (suma% 10 ); 12 carry = suma / 10 ; 13 } 14 de retorno sb.reverse () toString ().; 15 } 16 }
implementación de JavaScript
1 / * * 2 @ param * {cadena} num1 3 * @param {cadena} num2 4 * @return {cadena} 5 * / 6 var addStrings = función (num1, num2) { 7 vamos i = num1.length - 1 ; 8 let j = num2.length - 1 ; 9 Let acarreo = 0 ; 10 res vamos a = []; 11 , mientras que (i> = 0 || j> = 0 || carry == 1 ) { 12 let digit1 = i <0? 0: num1.charAt (i) - '0' ; 13 dejar que digit2 = j <0? 0: num2.charAt (j) - '0' ; 14 vamos digitsSum = digit1 + + digit2 de transporte; 15 res.push (digitsSum% 10 ); 16 carry = Math.floor (digitsSum / 10 ); 17 i-- ; 18 j-- ; 19 } 20 de retorno res.reverse () join ( ''. ); 21 };