Me acabo de unir a Stack Overflow y esta es mi primera publicación, así que no duden en avisarme si estoy haciendo algo mal.
Se me presentó el desafío de crear una función que acepte una cadena y llame a otra función determinada que intercambie índices hasta que la cadena se devuelva al revés.
He llegado tan lejos como a continuación:
//given function function swap(str, first, last){ str = str.split(''); let firstIndex = str[first]; str[first] = str[last]; str[last] = firstIndex; str = str.join("").toString() return str; } //my function let word = "Hello" function reverseSwap(str) { let result = "" for (let i = 0; i < str.length/2; i++) { result += swap(str, i, str.length -1 - i); } return result; } console.log(reverseSwap(word))Sin embargo, esto devuelve "oellHHlleoHello", porque cada iteración intercambia índices de la cadena original y luego se concatena. ¿Es posible, en la segunda iteración, hacer que el ciclo itere a partir del resultado de la iteración anterior para que ocurra lo siguiente?:
resultado de la primera iteración: intercambio (palabra, 0, 4) que devuelve "oellH"
la segunda iteración usa "oellH" en lugar de "Hello" para intercambiar (1, 3) que devuelve "olleH"
Luego, swap(2,2) que no cambia nada.
no funciona porque
Aquí hay una solución simple:
function swap(str, first, last) { str = str.split(""); let firstIndex = str[first]; str[first] = str[last]; str[last] = firstIndex; str = str.join("").toString(); return str; } let word = "Hello"; function reverseSwap(str) { for (let i = 0; i < str.length / 2; i++) { str = swap(str, i, str.length - 1 - i); } return str; } console.log(reverseSwap(word));