Kezdőoldal » Számítástechnika » Programozás » Ezt így kéne megoldani?

Ezt így kéne megoldani?

Figyelt kérdés

Java-ban kell függvényt írnom, ami megmondja egy szóról, hogy lehet-e palindrom a betűk átrendezésével.

Tehát mondjuk a "racecar" szó palindrom, így a függvény pl. az "ecarrac" stringre truet ad.

Vagy pl. "aap" -> true (mert "apa" palindrom).

"abc" -> false


"A szó az angol ABC kisbetűiből állhat és nagyon hosszú is lehet", ilyen feltétel van.


Úgy oldottam meg, hogy megszámolom a stringben a páratlanszor előforduló karaktereket és ha ez a szám nagyobb, mint egy, akkor falset adok vissza, egyébként truet.


Itt a kódom:

[link] (nem enged rendes urlt elküldeni, vegyétek ki a zárójeleket)


Ha van ennél jobb módszer akkor megköszönném, ha leírnátok.



2020. ápr. 2. 09:32
1 2
 1/12 anonim ***** válasza:

A módszer nem jó, mert lehet 3 darab mássalhangzóval is palindrom.

Az én megoldásom az lenne, hogy csinálsz egy 26 elemű int tömböt, aminek minden eleme az abc egy betűjét reprezentálja. Haladsz a stringedben, és az aktuális karakter -'a' indexű elemet növeled eggyel.

Ezután megnézed a string hosszát.

Ha páros hosszú a string, akkor 0 páratlan lehet a tömbben, ha páratlan hosszú a string, akkor pontosan 1 darab páratlan számú lesz.

Ha ez nem teljesül, nem rendezhető át.

2020. ápr. 2. 11:31
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:

Helyesbítek

"A módszer nem jó, mert lehet 3 darab mássalhangzóval is palindrom."

Nem ezért nem jó, mert akkor is 1-et találsz páratlan elemszámmal, félreolvastam.

Hanem azért nem jó, mert páros hosszú szövegnél nem lehet páratlan (középső) betű, azaz 0 páratlan lehet csak

2020. ápr. 2. 11:33
Hasznos számodra ez a válasz?
 3/12 A kérdező kommentje:
Nem egészen értem, írsz egy példa stringet, amire nem jó az algoritmusom?
2020. ápr. 2. 11:40
 4/12 A kérdező kommentje:
Mármint a megoldás javaslatot köszönöm, azt a részt próbálom megérteni, hogy az enyém miért hibás logikailag.
2020. ápr. 2. 11:45
 5/12 anonim ***** válasza:

Nekem jónak tűnik a logika, 2 kisebb módosítást eszközölnék talán:

Felesleges szerintem char tömböt csinálni a Stringből, használhatod a String.charAt(index) metódust.

A 2. ciklusban lévő if blokkot pedig le lehet rövidíteni "odds += count % 2"-re.

2020. ápr. 2. 11:55
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:

"Hanem azért nem jó, mert páros hosszú szövegnél nem lehet páratlan (középső) betű, azaz 0 páratlan lehet csak"


Asszem értem mit akarsz mondani, de ha egy páros hosszú szövegben van egy páratlan betű, akkor a fennmaradó betűk száma páratlan, tehát mindenképpen lennie kell mégegy páratlan betűnek. Így pedig már megbukik az odds < 2 teszten.

De lehet én értem rosszul, azért lenne jó, ha írnál egy példát.


5-ös köszi!

2020. ápr. 2. 12:35
 7/12 A kérdező kommentje:

Közben frissítettem a kódomat az 5. válaszoló javaslatai alapján:

[link] (zárójelek nélkül)

Köszönöm mégegyszer.

2020. ápr. 2. 16:03
 8/12 anonim ***** válasza:
Még annyi talán, hogy a 2. for ciklusban ha odds eléri a 2-es értéket, akkor vissza lehet térni egyből false-al, felesleges végig mennie a ciklusnak.
2020. ápr. 2. 16:28
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
Utána meg persze csak egy return true kell, hiszen akkor már felesleges vizsgálni odds értékét.
2020. ápr. 2. 16:29
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:
Valóban, erre nem gondoltam.
2020. ápr. 2. 18:25
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!