URLfy

Escreva um método para substituir todos os espaços em uma string por `%20`. Você pode assumir que a string tem espaço suficiente no final para conter os caracteres adicionais e que a função vai receber o comprimento "verdadeiro" da string.

Dicas

Solução 1

      
const urify = (input, realSize) => {
  const arrayInput = input.split("")
  
  let spaceCount = 0

  for (let i = 0; i < realSize; i++) {
    if (arrayInput[i] === ' ') {
      spaceCount++
    }
  }

  let index = realSize + (spaceCount * 2)

  if (index === arrayInput.length) {
    for (let i = realSize - 1; i >= 0; i--) {
      if (arrayInput[i] === ' ') {
        arrayInput[index - 1] = '0'
        arrayInput[index - 2] = '2'
        arrayInput[index - 3] = '%'
        index = index - 3
      } else {
        arrayInput[index-1] = arrayInput[i]
        index--
      }
    }
  }

  return arrayInput.join("")
}
      
      

Solução 2

      
const spacesAvailable = (characters, trueLength) => {
  const spaces = []

  for (let index = 0; index < trueLength; index++) {
    if (characters[index] === ' ') {
      spaces.push(index)
    }
  }

  return spaces
}

const urify = (input, trueLength) => {
  const characters = input.split("")
  
  const spaces = spacesAvailable(characters, trueLength)
  const spaceCount = spaces.length

  const transformedIndex = trueLength + (spaceCount * 2)

  if (transformedIndex === characters.length) {
    for (let index = 0; index < spaces.length; index++) {
      characters[spaces[index]] = '%20'
    }

    return characters.join("").trim()
  }

  return characters.join("")
}