Palindrome Sayı Programı Java while & for Döngüsünü Kullanmak
⚡ Akıllı Özet
Palindrome Sayı Programı Java Bu algoritma, rakamları ters çevirerek bir değerin ileri ve geri okunduğunda aynı olup olmadığını belirler. Makale, algoritmayı, while döngüsü sürümünü, for döngüsü sürümünü, dize tabanlı yöntemi, özyinelemeyi, uç durumları ve doğrulanmış çıktı ile karmaşıklık analizini sunmaktadır.
Palindrom sayı nedir?
A Palindrom numarası Bir sayı, ters çevrildiğinde aynı sayı olarak kalan bir sayıdır. Örneğin, 131. Rakamları ters çevrildiğinde aynı sayı olarak kalır. Bir palindrom sayının dikey eksende yansıma simetrisi vardır. Aynı fikir, harfleri ters çevrildiğinde aynı yazılışa sahip olan bir kelime için de geçerlidir.
Palindrom Sayı Örnekleri Java
121, 393, 34043, 111, 555, 48084
Palindrom Kelimelere Örnekler
LOL, MADAM
0'dan 9'a kadar olan her bir rakam, tanım gereği bir palindromdur, çünkü bir rakamın ters çevrilmesi aynı rakamı verir.
Palindrom Sayı Algoritması
Aşağıda palindrom sayı algoritmasının mantığı verilmiştir. Java:
- Olması için kontrol edilmesi gereken giriş numarasını getirin palindrom.
- Sayıyı geçici bir değişkene kopyalayın ve ters çevirin.
- Tersine çevrilmiş ve orijinal numarayı karşılaştırın.
- Eğer sayılar aynıysa, o sayı "palindrom sayı"dır.
- Aksi takdirde sayı "palindrom sayı" değildir.
Ters işlemin kendisi dikkat gerektiren tek kısımdır. İki aritmetik işlem tüm işi halleder ve aşağıdaki tabloya bakabilirsiniz. tracOnları 171 değerinde satın alıyor.
| Geçiş | (kalan sayı) | sonDigit = a % 10 | toplam = (toplam * 10) + sonDigit | a = a / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Son işlemden sonra, toplam 171 değerini verir ki bu da orijinal giriş değerine eşittir, dolayısıyla sayının bir palindrom olduğu doğrulanmıştır.
Giriş numarasının Palindrom olup olmadığı nasıl kontrol edilir
Aşağıda bir palindrom programı bulunmaktadır. Java WHILE döngüsü kullanılarak. Döngü, rakamlar kaldığı sürece devam eder ve yazdırma ifadeleri, her geçiş sırasında her değişkenin durumunu gösterir.
package com.guru99; public class PalindromeNum { public static void main(String[] args) { int lastDigit, sum = 0, a; int inputNumber = 171; //It is the number to be checked for palindrome a = inputNumber; // Code to reverse a number while(a > 0) { System.out.println("Input Number " + a); lastDigit = a % 10; //getting remainder System.out.println("Last Digit " + lastDigit); System.out.println("Digit " + lastDigit + " was added to sum " + (sum * 10)); sum = (sum * 10) + lastDigit; a = a / 10; } // if the given number equals sum then the number is a palindrome, otherwise not if(sum == inputNumber) System.out.println("Number is palindrome "); else System.out.println("Number is not palindrome"); } }
Code Çıktı:
Input Number 171 Last Digit 1 Digit 1 was added to sum 0 Input Number 17 Last Digit 7 Digit 7 was added to sum 10 Input Number 1 Last Digit 1 Digit 1 was added to sum 170 Number is palindrome
For döngüsü kullanarak Palindromu Kontrol Etme Programı
Aşağıda ise Java Bir for döngüsü kullanarak palindrom bulan program. Başlık, çıkış testini ve bölme işlemini içerdiğinden, döngü gövdesi tekrar bölme işlemi yapmamalıdır.
package com.guru99; public class PalindromeNumForLoop { public static void main(String[] args) { int lastDigit, sum = 0, a; int inputNumber = 185; //It is the number to be checked for palindrome a = inputNumber; // Code to reverse a number for( ; a != 0; a /= 10 ) { System.out.println("Input Number " + a); lastDigit = a % 10; //getting remainder System.out.println("Last Digit " + lastDigit); System.out.println("Digit " + lastDigit + " was added to sum " + (sum * 10)); sum = (sum * 10) + lastDigit; } // if the given number equals sum then the number is a palindrome, otherwise not if(sum == inputNumber) System.out.println("Number is palindrome "); else System.out.println("Number is not palindrome"); } }
Code Çıktı:
Input Number 185 Last Digit 5 Digit 5 was added to sum 0 Input Number 18 Last Digit 8 Digit 8 was added to sum 50 Input Number 1 Last Digit 1 Digit 1 was added to sum 580 Number is not palindrome
⚠️Uyarı: Sık yapılan bir hata şudur: a = a / 10; for döngüsünün gövdesi içinde, başlık zaten içeriyorken a /= 10Ardından sayı her geçişte ikiye bölünür, rakamların yarısı atlanır ve 121 gibi gerçek bir palindrom, yanlışlıkla palindrom olmadığı şeklinde raporlanır.
Palindrome Programı Java Dize Kullanımı Reverse
Değeri metne dönüştürmek, StringBuilder'ın tek bir çağrıda tersine çevirmesini sağlar. Aynı yöntem, sayısal yaklaşımın ele alamadığı kelimeler için de geçerlidir.
package com.guru99; public class PalindromeString { public static boolean isPalindrome(String text) { // ignore case so MADAM and madam behave identically String clean = text.toLowerCase(); String reversed = new StringBuilder(clean).reverse().toString(); return clean.equals(reversed); } public static void main(String[] args) { System.out.println(isPalindrome("121")); System.out.println(isPalindrome("MADAM")); System.out.println(isPalindrome("Java")); } }
Code Çıktı:
true true false
Palindrome Programı Java Özyinelemeyi Kullanma
Özyinelemeli fonksiyon, en dıştaki karakter çiftini karşılaştırır ve ardından küçülen orta bölüm üzerinde kendini tekrar çağırır. İki karakterden daha az karakter kaldığında yöntem durur.
package com.guru99; public class PalindromeRecursion { public static boolean isPalindrome(String text, int left, int right) { // base case: pointers met or crossed if (left >= right) { return true; } if (text.charAt(left) != text.charAt(right)) { return false; } return isPalindrome(text, left + 1, right - 1); } public static void main(String[] args) { String value = "34043"; System.out.println(value + " is palindrome: " + isPalindrome(value, 0, value.length() - 1)); String other = "12345"; System.out.println(other + " is palindrome: " + isPalindrome(other, 0, other.length() - 1)); } }
Code Çıktı:
34043 is palindrome: true 12345 is palindrome: false
Uç Durumlar ve Yöntem Karşılaştırması
Üç girdi, basit uygulamaları bozar; bu nedenle her sürüm kullanımdan önce bunlara karşı test edilmelidir.
- Negatif sayılar: -121 gibi değerler asla palindrom değildir, çünkü eksi işaretinin sonunda bir karşılığı yoktur.
if (inputNumber < 0) return false;. - Sondaki sıfırlar: 100 değeri 1'e ters çevrildiğinden, karşılaştırma doğru bir şekilde yanlış sonuç verir. Sıfırla biten değerler arasında yalnızca 0 sayısının kendisi geçerlidir.
- Tamsayı taşması: Rev1,999,999,999 gibi büyük bir tamsayı girildiğinde, toplam tamsayı aralığı aşılabilir. Giriş değeri sınıra yaklaştığında, toplamı uzun tamsayı olarak tanımlayın.
Aşağıdaki tablo, bu sayfada gösterilen dört yaklaşımı karşılaştırmaktadır.
| Yöntem | Zaman Karmaşıklığı | Uzay Karmaşıklığı | Kelimeler İçin Eserler | notlar |
|---|---|---|---|---|
| Döngü sırasında | O (log n) | O (1) | Yok hayır | Rakam ters çevirme işleminin en net gösterimi |
| Döngü için | O (log n) | O (1) | Yok hayır | Aynı mantık, sadece başlıkta bölümleme |
| StringBuilder tersi | O (n) | O (n) | Evet | En kısa kod, yeni bir dize tahsis eder. |
| Özyineleme | O (n) | O(n) yığını | Evet | Özyineleme üzerine yapılan mülakat görüşmeleri için faydalı. |
Rakam extracBurada kullanılan kalıp birçok alıştırmada tekrar karşımıza çıkıyor. Devam edin... Fibonacci serisi Java, Java asal sayıyı kontrol eden program, Ve Bubble Sıralama algoritması JavaDöngü sözdiziminin kendisi için, aşağıdaki bölüme göz atın. her döngü için Java ve daha geniş Java öğretici, ve bakın Java dizeleri Metin tabanlı yöntem için.

