Mengecek Palindrome Menggunakan Stack

[P]ada tulisan yang lalu (Implementasi Struktur Data Stack Java) sudah saya tulis bahasan mengenai Stack. Kalau ada yang bertanya apa kegunaannya maka postingan ini akan berusaha menjawabnya dengan menggunakan sebuah contoh program yang memanfaatkan Stack.

Algoritma dan Struktur Data

Sebelumnya sudah tahu apa itu palindrome?.
Palindrome adalah suatu kata atau kalimat yang bisa dibaca baik dari depan maupun belakang dengan bunyi yang sama. Misal :
– Kasur ini rusak
– No x in Nixon
– Lion oil
– Was it a car or a cat I saw?

Kalimat tersebut di atas jika dibaca dari depan maupun belakang akan memiliki urutan huruf yang sama.

Hubungan palindrome dengan Stack kali ini adalah saya akan menulis sebuah kode program yang digunakan untuk mengecek apakah sebuah kata atau kalimat merupakan palindrome atau bukan dengan bantuan Stack.

Kenapa dengan bantuan Stack?
Coba perhatikan lagi contoh kalimat polindrome tadi. Untuk menguji apakah palindrome atau bukan adalah dengan mencocokkan huruf per huruf depan dengan belakang sama atau tidak. Untuk mendapatkan urutan huruf pada kalimat dari belakang kita gunakan Stack via method pop (ingat Last in First Out).

Berikut ini adalah kodenya, penjelasannya saya bahas line per line di bawah

String input pada method akan dihapus spasinya jika ada dan dihapus juga karakter selain huruf jika ada. Oleh karena itu digunakanlah replaceAll. Misal:
-Ada apa => Adaapa
-Ada’s ada => Adasada

Selanjutnya, kalimat yang sudah “dibersihkan” tadi kita masukkan ke Stack huruf per huruf. Bagaimana memecahnya menjadi huruf per huruf? digunakanlah substring

Disinilah proses pengecekan terjadi. Pemandingan dilakukan antara huruf dari depan kalimat yang diwakili oleh karakter.substring() dengan huruf dari belakang kalimat yang diwakili oleh stack.pop(). Yang dibandingkan bukan kesamaannya, justru perbedaannya. Apakah beda atau sama, jika sama looping akan diteruskan sampai habis dan variabel isPalindrome akan tetap bernilai true. Namun jika berbeda maka isPalindrome menjadi false dan perulangan dihentikan.

Kita coba tes kode di atas menggunakan Unit Test dengan bantuan JUnit sebagai berikut.

Ketiga test case di atas ketika dijalankan seharusnya sukses semua. Jika masih ada yang gagal berarti kode pada kelas Palindrome belum benar.

Semoga paham dan bermanfaat 🙂

[followme]

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

One thought on “Mengecek Palindrome Menggunakan Stack

Leave a Reply

Your email address will not be published. Required fields are marked *