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.

  • 🔁 Temel Tanım: 131, 393 ve 34043 gibi sayılarda olduğu gibi, palindrom sayılar rakamları ters çevrildikten sonra da değişmeden kalır.
  • RevGenel Teknik: Modül operatörü extracSon rakamı alır ve tam sayı bölme işlemi, her geçişte bir rakam olmak üzere, bu rakamı kaldırır.
  • 🧮 Biriktirme Kuralı: Her geçişte, yeni eklenen miktar eklenmeden önce toplam on ile çarpılır.tracted digit.
  • 🔂 Döngü Seçimi: Bir while döngüsü ve bir for döngüsü, bölme işlemi her yinelemede yalnızca bir kez gerçekleştiği sürece aynı sonucu verir.
  • 🔤 Dize Metodu: StringBuilder, metni doğrudan ters yönde karşılaştırır ve hem kelimeler hem de sayılar için çalışır.
  • ⚠️ Sınır Durumlar: Tek basamaklı sayılar her zaman palindromdur, negatif sayılar asla palindrom değildir ve sondaki sıfırlar sayısal karşılaştırmayı bozar.
  • ⏱️ Karmaşıklık Profili: Her iki döngü sürümü de basamak sayısıyla orantılı olarak O(log n) sürede çalışır ve O(1) ek alan kullanır.

Palindrome Sayı Programı Java

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.

  1. 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;.
  2. 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.
  3. 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.

SSS

Hayır. Eksi işareti yalnızca başta görünür, bu nedenle -121'in tersi 121- olur ve bu asla eşleşmez. Sıfırdan küçük herhangi bir değer için yanlış döndüren bir erken kontrol ekleyin.

Çarpma işlemi, önceden toplanmış rakamları bir basamak sola kaydırır ve böylece birler basamağını yeni rakam için boşaltır.tracBu işlem, sayıyı ters sırada yeniden oluşturur.

Tersine çevrilmiş değer, 2147483647 olan maksimum tamsayı değerini aşabilir ve negatif bir sonuca dönüşebilir. Toplayıcıyı uzun tamsayı olarak tanımlayın veya değerleri dizeler olarak karşılaştırın.

Değeri Scanner ve nextInt ile okuyun, ardından aynı ters çevirme mantığına iletin. Sayısal olmayan girişlerin programı çökertmemesi için okuma işlemini bir try bloğuna sarın.

Genellikle, kod incelemesi istendiğinde "evet" cevabını verirler. Nadiren kendiliğinden hata işareti koyarlar, bu nedenle her zaman bilinen bir palindrom olan 121 gibi bir kodu test edin, geçerli bir örneğe güvenmeyin.

Bu soru, birkaç satırda döngü kontrolünü, tamsayı aritmetiğini ve uç durum mantığını test eder. Ayrıca, adayın yapay zeka tarafından oluşturulan kodu göndermeden önce doğrulayıp doğrulamadığını da ortaya koyar.

Bu yazıyı şu şekilde özetleyin: