Hackerrank – Weighted Uniform Strings

Hackerrank – Popis problému

Celý popis zadania sa nacháza – Hackerrank.

Riešenie

Nájdem si zoznam všetkých podreťazcov, ktoré obsahujú za sebou idúce znaky. Keď mám ich zoznam, vytvorím si všetky možné váhy podľa zadania.
Tzn, že každý podreťazec si rozdelím na n častí, kde n je dĺžka podreťazca. Takto získam všetky možné váhy v celom zadanom reťazci.

Nakoniec pre každé query zistím či sa nachádza vo vypočítaných váhach.

Príklad zo zadania
"abccddde":
– všetky podreťazce
— „a“ (jednotková váha 1)
— „b“ (jednotková váha 2)
— „cc“ (jednotková váha 2)
— „ddd“ (jednotková váha 4)
— „e“ (jednotková váha 5)

Potom vypočítam všetky váhy pre n častí
– „a“ -> 1
– „b“ -> 2
– „cc“ -> 1 * 3, 2 * 3 -> 3, 6
– „ddd“ -> 1 *4, 2 * 4. 3 * 4 -> 4, 8, 12
– „e“ -> 5

Všetky možné váhy : 1, 2, 3, 4, 5, 6, 8, 12

Vytvoril som riešenie v týchto programovacích jazykoch:

Všetky riešenia sú dostupné aj na mojom GitHub profile.

Scala

Java

Javascript

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *