Estoy tratando de resolver 557 en leetCode con dos punteros y encontré un comportamiento extraño que no puedo explicar.
A continuación se muestra mi código
/** * @param {string} s * @return {string} */ var reverseWords = function(s) { // return s.split(" ").map(w => w.split("").reverse().join("")).join(" ") let arr = s.split(" "), w for(let i = 0; i < arr.length; i++){ let x = arr[i], left = 0, right = x.length - 1, holder = null while(left < right){ holder = x[left] x[left] = x[right] x[right] = holder left += 1 right -= 1 } } return arr.join(" ") }; y ejemplo "Let's take LeetCode contest"
si bien puedo mover el ciclo while a una función y resolverlo de una manera diferente, no estoy seguro de por qué x no cambia, según tengo entendido, este es un elemento de matriz y se puede cambiar.
Esto sucede porque la variable "x" no es una matriz sino una cadena que proviene de la variable "arr" para que funcione, debe cambiar
let x = arr[i]a
let x = arr[i].split("")el codigo correcto es:
var reverseWords = function(s) { // return s.split(" ").map(w => w.split("").reverse().join("")).join(" ") let arr = s.split(" "), w for(let i = 0; i < arr.length; i++){ let x = arr[i].split(""), left = 0, right = x.length - 1, holder = null while(left < right){ holder = x[right] x[right] = x[left] x[left] = holder left += 1 right -= 1 } arr[i] = x.join(""); } return arr.join(" ") };