Bir yazının baştan sona okunması ile sondan başa okunması aynı ise bu yazılara palindrom adı verilir.
Örnek: kabak palindromik bir sözcüktür çünkü sondan başa okunması ile baştan sona okunması aynıdır.
Bu soruda tamsayıların palindrom olup olmadıklarını kontrol eden bir java programı yazacağız. Bu problemin çözümünde kullanacağımız algoritma şu şekilde olacak:
1. Tamsayıyı String veri tipine dönüştür
2. String'i bir diziye dönüştür ve baştaki ve sondaki (sıfırıncı ve (n-1). elemanlar) harfleri karşılaştır. Bu elemanların aynı olması durumunda karşılaştırma işlemini bir baştan bir sondan hizalayarak sürdür.
Örneğin:
757 palindrom mudur? Doğru (757 = 757) Tersten yazılışı da aynı
528 palindrom mudur? Yanlış (528 != 825) Tersten yazılışı farklı
Kodlar:
Scanner girdi = new Scanner(System.in);
System.out.println("Lütfen bir tamsayı yazın");
int sayi = girdi.nextInt();
String str = String.valueOf(sayi);
int i = 0;
int j = str.length() - 1;
boolean kontrol = true;
while (i < j) {
if (str.charAt(i++) != str.charAt(j--)) {
kontrol = false;
break;
}
}
if (kontrol)
System.out.println(sayi+" sayısı palindrom bir sayıdır");
else
System.out.println(sayi+" sayısı palindrom bir sayı değildir");
Çıktı:
Lütfen bir tamsayı yazın
> 85258
85258 sayısı palindrom bir sayıdır
Alternatif çözüm: Sayının String'e dönüştürüldükten sonra tersten yazdırılmış bir kopyasını alıp iki String'i karşılaştırma çözümünü de uygulayabilirdik.