Memeriksa Bilangan Palindrom

Palindrom adalah kata, rangkaian kata, atau bilangan yang terbaca sama, baik dari depan maupun dari belakang. Beberapa contoh palindrom adalah radar, kasur rusak, 1001.

Pada bahasa pemrograman Java kita dapat dengan mudah memastikan bahwa suatu string adalah palindrom atau bukan.

boolean isPalindrom (String str) {
  
  return str.equals(new StringBuffer().append(str).reverse().toString());
}

Kode di atas mengembalikan nilai true jika argumennya adalah palindrom. Namun untuk memeriksa palindrom dari argumen berupa bilangan, kita membutuhkan type casting. Type casting berguna untuk mengkonversi suatu tipe data ke tipe data yang lain. Dalam kasus ini kita membutuhkan konversi dari tipe data int ke String. Caranya mudah saja, tinggal tambahkan saja bilangan tersebut dengan sebuah string kosong.

boolean isPalindrom (int bilangan) {
  
  String str = "" + bilangan;
  return str.equals(new StringBuffer().append(str).reverse().toString());
}

Dengan kode di atas kita bisa memeriksa apakah sebuah bilangan termasuk palindrom atau bukan.

Untuk Anda yang malas menghafal kode yang panjang di atas, kita bisa menggunakan pemeriksaan palindrom secara manual. Pada dasarnya algoritma palindrom yaitu membandingkan karakter pertama dengan karakter terakhir, lalu karakter kedua dengan karakter kedua dari belakang, dan seterusnya. Jika jumlah karakternya ganjil, misalnya “radar” (5 karakter), karakter yang berada tepat di tengah-tengah, yaitu karakter ketiga (“d”) tidak perlu diperiksa.

boolean isPalindrom (int bilangan) {

  String str = "" + bilangan;    // konversi dari int ke Str
  char [] c = str.toCharArray(); // konversi dari String ke array char
  int i1 = 0,        // indeks pertama
  i2 = c.length - 1; // indeks terakhir

  while (i2 > i1) {

    if (c[i1 ++] != c[i2 --])
      return false;
  }

  return true;
}

Pada baris keempat kita konversikan tipe data String ke bentuk dasarnya yaitu sekumpulan karakter dengan method toCharArray(). Pada baris kesepuluh, kita akan membandingkan sekaligus menambah indeks i1 dan mengurangi indeks i2. Perhatikan bahwa operator unary ditulis setelah variable berarti bahwa pembadingan dilakukan terlebih dahulu kemudian baru menambah/mengurangi indeksnya.

About Sibudi

Ubuntu user | Loves books | Blogger | Web Developer | Learn PHP, JavaScript, Ruby & Python the hard way

02. October 2012 by Sibudi
Categories: Java | Tags: , , , | 2 comments

Comments (2)

  1. mantep..
    thx gan

Leave a Reply

Required fields are marked *