DEV Community

Gabriel J
Gabriel J

Posted on

2

Zerando HackerRank ( 18 )

E no décimo oitavo episodio desta serie que queima os miolos, vamos abordar um problema envolvendo um visualizador de PDF's.

O problema descrito está relacionado à determinação da área de destaque em um visualizador de PDF quando um bloco contíguo de texto é selecionado. Nesse visualizador, cada palavra é destacada independentemente e a seleção é destacada com um retângulo azul. Dado um conjunto de alturas de caracteres para cada letra minúscula do alfabeto inglês e uma string de palavras, o objetivo é determinar a área de destaque assumindo que todas as letras têm a mesma largura.

Para calcular a área de destaque, deve-se determinar a altura da letra mais alta na string selecionada e multiplicá-la pelo número de letras na string selecionada, assumindo que todas as letras têm a mesma largura. A altura de cada letra é dada pelo conjunto de alturas de caracteres de entrada correspondente a cada letra.

Para isso vamos criar a função "designerPdfViewer", essa função vai receber 2 parametros h e word.

O parâmetro h é um array de números inteiros que corresponde às alturas de cada letra do alfabeto, em que cada posição do array representa uma letra, começando pela letra "a" na posição 0 e terminando na 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 é responsável por calcular a área ocupada pela palavra na tela, considerando que a largura de cada letra é sempre igual a 1. Para isso, a função utiliza o parâmetro h para obter a altura de cada letra da palavra e, em seguida, calcula a altura da letra mais alta presente na palavra. Essa altura máxima é multiplicada pelo comprimento da palavra para obter a área total ocupada na tela.

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

Por fim, a função Math.max() é utilizada para obter a altura da letra mais alta presente na palavra, que é multiplicada pelo comprimento da palavra para obter a área total ocupada na tela.

Nossa função vai ficar assim:

Image description

E assim fechamos mais um desafio.

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay