Feladatmegoldas hogyan?
Kapok egy string tömböt (angol abc kisbetűiből) és ki kell írni maximum hány darab olyan stringet tudok kiválasztani ahol a kiválasztott stringek ilyen sorozatba állíthatóak (tetszőleges sorrendben):
s1 = "alapstring"
s2 = s1 + 'egy karakter'
s3 = s2 + 'egy karakter'
s4 = s3 + 'egy karakter'
...
Pl. ezt a tömböt kapom:
["asdx", "c", "xyz", "asd", "xy" "asdxp"]
Itt 3 a megoldás mert a következő stringeket választhatom ki:
"asd", "asdx", "asdxp" - ahol adott string mindig az előző string + 1 karakter
Az "xy", "xyz" is megfelel a szabálynak, de ez csak 2 elemű, az előző pedig 3 és a maximumra vagyunk kíváncsiak.
A következő megoldás jutott eszembe:
Mivel az angol abc kisbetűi fordulhatnak csak elő, ezért 26 karakterről van szó. Megyek végig a stringeken, adott stringhez hozzá fűzöm mind a 26 karaktert egyesével és megnézem, hogy a kapott string szerepel-e a tömbben. Ha igen, akkor megcsinálom ugyanezt a kapott stringen és így tovább.
Mi lehet ennél jobb megoldás?
Ha rendezel, akkor már a trie felépítése közben számolhatod az utakat.
Ha nem rendezel, akkor a végén be kell járnod a triet és megkeresni a maximumot.
Utóbbi komplexitást tekintve optimális, viszont a konstans faktor miatt valószínűleg lassabb lenne a rendezős megoldásoknál.
#13 ha nem viccből kérdezed:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!