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
- Você pode achar que precisa saber o número de espaços em branco. Você pode apenas contá-los?
- Muitas vezes é mais fácil modificar strings indo do final da string para o começo
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("")
}