Ezt hogyan kéne leprogramozni?
Alapvetően C#-ról lenne, szó, viszont engem nem a konkrét megoldás érdekel, csak rávezetni kéne.
Egy szót tükörszónak nevezünk, ha balról és jobbról kiolvasva betűről betűre megegyezik.
(Tehát minden egybetűs szó tükörszó.) Minden szóban található tükörszó, amin azt értjük,
hogy ha kitörlünk belőle betűket, akkor tükörszót kapunk.
Írjon programot, amely meghatározza egy adott szóban található leghosszabb tükörszó
hosszát!
A TUKOR.BE állomány egyetlen sorában egy legfeljebb 100 karakterből álló S szó van.
A TUKOR.KI állományba egyetlen számot kell írni: az S szóban található leghosszabb
tükörszó hosszát.
Példa:
TUKOR.BE TUKOR.KI
abbakabadara 7
#3 olvasd tovább:
"Minden szóban található tükörszó, amin azt értjük,
hogy ha kitörlünk belőle betűket, akkor tükörszót kapunk."
Például az "abbakabadara" szóban szereplő "abba", "bakab", "aka", "aba", "abada", "ara" szavak tükörszavak, de például az "abakaba" is az (ha a 2. karaktert, a b-t kitöröljük) - és ez a leghosszabb.
Ez csak nem a Nemes Tihamér OITV-ben volt? :-)
Amúgy egy rekurzív megoldást készíthetsz rá:
- mi van ha a vizsgált tartomány két szélső karaktere egyezik?
- mi van ha nem?
Plusz:
- mi van, ha a vizsgált tartomány hossza egy?
Rekurzív függvény, mely két részből áll, a függvény bemenete a szó:
Vizsgálat, hogy a paraméterben kapott szó tükörszó-e, ha igen visszaadja a hosszát.
Egyébként pedig egy ciklus fut (i=0..szóhossz-1), ami előállít egy új stringet, ami a szó i. karakterét nem tartalmazza és ezzel meghívja a függvényt.
A ciklusban történt függvényhívások maximális visszatérési értékét kell visszaadni a függvénynek. Ha nem volt egy ilyen hívás se (mert nulla hosszúságú volt a bemenet), akkor nullát.
Lehetne még rajta optimalizálni, de alapvetően ennyi.
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!