DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Visualizando PDF

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: no problema de hoje, iremos analisar um array de cada uma das letras separadas num visualizador de pdf. Vejamos mais detalhes a seguir:

Designer PDF Viewer -

Quando um bloco contíguo de There is a list of character heights aligned by index to their letters. texto é selecionado em um visualizador de PDF, a seleção é destacada com um retângulo azul. Neste visualizador de PDF, cada palavra é destacada de forma independente.

  • Existem 26 palavras de altura alinhados -int h[26]// as alturas de cada letra
  • word string // uma string

  • retornar : int // o tamanho da área destacada

Vejamos a resolução:

function designerPdfViewer(h, word) {
    // Write your code here
return Math.max(...word.split("").map(w => h[w.charCodeAt() - 97])) * word.length;
}
Enter fullscreen mode Exit fullscreen mode

O código acima é uma função chamada designerPdfViewer que recebe dois parâmetros: h e word.

O parâmetro h é um array de números inteiros que representa as alturas de uma série de letras. Cada posição do array corresponde a uma letra do alfabeto, começando com a letra "a" na posição 0 e terminando com a letra "z" na posição 25. Por exemplo, se h for [1, 3, 1, 3, 1, 4, 1, 3, 2, 5, 5, 5, 5, 1, 5, 5, 1, 5, 2, 5, 5, 1, 5, 5, 5, 5], isso significa que a letra "a" tem altura 1, a letra "b" tem altura 3, a letra "c" tem altura 1 e assim por diante.

O parâmetro word é uma string que representa uma palavra. A função designerPdfViewer calcula a área ocupada pela palavra na tela, considerando que a largura de cada letra é sempre a mesma e igual a 1. Para isso, ela calcula a altura da letra mais alta na palavra e multiplica pelo comprimento da palavra.

O método split("") é usado para separar cada letra da palavra em um array. Em seguida, o método map() é usado para percorrer cada letra e obter sua altura correspondente no array h. Para isso, a expressão w.charCodeAt() - 97 é usada para obter o código Unicode da letra e subtrair 97, o que resulta em um número de 0 a 25 correspondente à posição da letra no array h.

Por fim, a função Math.max() é usada para obter a altura da letra mais alta na palavra, e o resultado é multiplicado pelo comprimento da palavra para obter a área total ocupada pela palavra na tela.

Com isso, concluímos mais um desafio do _Resolvendo problemas no HackerRank: _. Até a próxima.

Top comments (0)