Mit ronthatok el az alábbi feladatnál? (Hackerrank gyakorlás.)
Magamnak gyakorlok, de nem tudok rájönni a hiba okára. A minta tesztesetekre sikerül.
Feladat:
Kódom:
Logika, ami mentén gondolkozni próbálok:
A vector 0. indexen levő string-jének char-jain megyek csak végig, hiszen amelyik betű ebben az elemben nem szerepel, az már nem lehet gemstone. Elegendő csak az elsőt nézni.
A legkülső ciklus az arr[0]-n található char-okon megy végig.
A következő ciklus 1-től indul, a vectort járja be, de csak addig megy, amíg az épp vizsgált arr[arridx] helyen levő stringben megtalálható a betű (nulladik index string épp vizsgált betűje).
A legbelső while egy eldöntés tétele akar lenni. Megmondja, hogy ott-e a betű.
Ha adott betűre nézve a külső while ciklus végigment a tömbön (tehát a has_letter true maradt és az arridx < arr.size() feltétel miatt lépett ki), akkor a számlálót növelem 1-gyel, hiszen ez egy gemstone.
Akár a feladatot értem félre, akár banális (de rikító) hibám van, akár már az irány se jó, kérlek, legyetek kíméletesek hozzám! :)
Nem néztem meg a kódodat, de annyi a kérdés, hogy hány karakter szerepel minden stringben.
Ezt sokféleképpen meg lehet oldani, egy egyszerű O(n) megoldás (ahol n az összes karakterszám) ha mész végig a karaktereken és azt tárolod, hogy adott karaktert melyik lista tartalmazza. Amelyik karakternél a listák száma egyenlő az össz listaszámmal, az gem.
# 2
Majd este otthon ránézek, de itt lesz a kutya elásva. Köszi!
Nem volt időm.
Viszont így jóval nehezebbnek tűnik.
Végig kell gondolni, hogy a tömb első stringjében hogyan szűröm ki az ismétléseket.
Betehetem a karaktereket egy tömbbe vagy vectorba, de az is eléggé műveletigényes önmagában. Asszem n^2, bár sehol se tanították meg ezt normálisan.
Ehhez kell egy asszociatív tömb.
Első string mondjuk acdbaaa
Asszociatív tömb kulcsai: abcd
Hogyan építem fel? A C++-ban van asszociatív tömb?
Megyek a tömbön a második stringtől kezdődően.
Ha a-t találok, akkor az a kulcs értékét növelem eggyel, de vigyázni kell, hogy ha már növeltem, ne tegyem meg még egyszer. Ezt hogyan vizsgálom?
Amúgy szívesebben maradnék a saját algoritmusomnál, műveletigény ide vagy oda.
De szerintem elengedem ezt, ma is hatmillió dolgom lesz munka után.
További 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!