DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no hackerRank: Redução de Strings

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, reduzir os valores que se encontram dentro de um parâmetro. Vejamos mais informações com a explicação e sua resolução.

Super Reduced String -

Reduza uma sequência de caracteres minúsculos no intervalo ascii[‘a’..’z’]executando uma série de operações. Em cada operação, selecione um par de letras adjacentes que correspondam e exclua-as.

Exclua o máximo de caracteres possível usando este método e retorne a string resultante. Se a string final estiver vazia, retorne Empty String. Vejamos um exemplo:

  • aaabccdddd

  • abd

A execução do código a seguir nos mostra:

function superReducedString(s) {
    // Write your code here
  let arr = s.split("");

    for (let i = 0; i < arr.length; i++) {

        if (arr.length === 0) return ('Empty String')
        if (arr[i] === arr[i + 1]) {
            arr.splice(i, 2)
            i = i - 2
        }
    }
    return arr.join('')
}
Enter fullscreen mode Exit fullscreen mode

A linha let arr = s.split(""); converte a string s em um array de caracteres, onde cada caractere da string se torna um elemento do array. Isso é feito usando o método split(""), que divide a string em cada caractere vazio.

Em seguida, um loop for é usado para iterar sobre o array de caracteres. A variável de controle i representa o índice atual no array.

Dentro do loop, há uma verificação condicional if (arr.length === 0) return ('Empty String'). Se o tamanho do array se tornar zero, isso significa que todos os caracteres idênticos foram removidos e a string resultante é vazia. Nesse caso, a função retorna a string 'Empty String' para indicar que a string original foi completamente reduzida.

A próxima verificação condicional if (arr[i] === arr[i + 1]) verifica se o caractere atual é igual ao próximo caractere no array. Se eles forem idênticos, isso significa que encontramos uma sequência de caracteres repetidos.

Dentro do bloco if, a linha arr.splice(i, 2) remove os caracteres repetidos do array. O método splice modifica o array original, removendo dois elementos a partir da posição i, ou seja, o caractere atual e o próximo caractere.

Após a remoção dos caracteres repetidos, a linha i = i - 2 é executada para atualizar o valor da variável de controle i. Isso é necessário para garantir que o próximo loop do for verifique novamente o caractere atual e seu novo próximo caractere, já que os índices do array foram modificados pela remoção.

O loop continua até que todos os caracteres repetidos tenham sido removidos do array.

Finalmente, fora do loop, a função retorna a string resultante usando o método join(''). Isso une todos os elementos do array em uma única string sem espaços entre eles.

O resultado será:

aaabccddd
Expected Output
abd
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)