Programma dei numeri palindromi in Java Utilizzo di while e for Loop

⚡ Riepilogo intelligente

Programma dei numeri palindromi in Java Questo articolo illustra l'algoritmo, una versione con ciclo while, una versione con ciclo for, un metodo basato su stringhe, la ricorsione, i casi limite e l'analisi della complessità con output verificato.

  • 🔁 Definizione di base: Un numero palindromo rimane invariato anche dopo aver invertito le sue cifre, come nel caso di 131, 393 e 34043.
  • RevTecnica generale: L'operatore modulo extracts è l'ultima cifra e la divisione intera la rimuove, una cifra per passaggio.
  • 🧮 Regola dell'accumulatore: Ogni passaggio moltiplica la somma corrente per dieci prima di aggiungere il appena estrattatraccifra ted.
  • 🔂 Scelta del ciclo: Un ciclo while e un ciclo for producono risultati identici, a condizione che la divisione venga eseguita esattamente una volta per iterazione.
  • 🔤 Metodo stringa: StringBuilder confronta direttamente il testo in modo inverso e funziona sia con le parole che con i numeri.
  • ⚠️ Casi limite: I valori a una cifra sono sempre palindromi, i valori negativi non lo sono mai e gli zeri finali interrompono il confronto numerico.
  • Profilo di complessità: Entrambe le versioni del ciclo vengono eseguite in un tempo O(log n) proporzionale al numero di cifre e utilizzano uno spazio aggiuntivo O(1).

Programma dei numeri palindromi in Java

Cos'è un numero palindromo?

A Numero palindromo Un numero palindromo è un numero che rimane invariato anche se le sue cifre vengono invertite. Ad esempio, 131. Quando le sue cifre vengono invertite, il numero rimane lo stesso. Un numero palindromo presenta simmetria di riflessione rispetto all'asse verticale. Lo stesso concetto si applica a una parola che mantiene la stessa ortografia anche se le sue lettere vengono invertite.

Esempi di numeri palindromi in Java

121, 393, 34043, 111, 555, 48084

Esempi di parole palindrome

LOL, MADAM

Per definizione, ogni cifra compresa tra 0 e 9 è un numero palindromo, perché invertendo una cifra si ottiene sempre la stessa cifra.

Algoritmo dei numeri palindromi

Di seguito è riportata la logica dell'algoritmo dei numeri palindromi. Java:

  • Recupera il numero di input che deve essere verificato per essere a Palindrome.
  • Copia il numero in una variabile temporanea e invertilo.
  • Confronta il numero invertito e quello originale.
  • Se sono uguali, il numero è un “numero palindromo”.
  • Altrimenti il ​​numero non è un “numero palindromo”.

L'inversione in sé è l'unica parte che richiede attenzione. Due operazioni aritmetiche fanno tutto il lavoro, e la tabella sottostante tracli valuta per il valore 171.

Passare un (numero rimanente) ultimoDigit = a % 10 somma = (somma * 10) + ultimoDigit a = a / 10
1 171 1 1 17
2 17 7 17 1
3 1 1 171 0

Dopo l'ultimo passaggio, la somma è 171, che corrisponde al valore di input originale, quindi il numero è confermato essere un palindromo.

Come verificare se il numero immesso è palindromo o meno

Di seguito è riportato un programma palindromo in Java con un ciclo WHILE. Il ciclo continua finché ci sono cifre e le istruzioni print mostrano lo stato di ogni variabile durante ogni iterazione.

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 Produzione:

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

Programma per verificare il palindromo utilizzando il ciclo for

Di seguito è riportato un Java Programma per trovare un palindromo usando un ciclo for. L'intestazione contiene il test di uscita e la divisione, quindi il corpo del ciclo non deve eseguire un'altra divisione.

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 Produzione:

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

⚠️ Attenzione: Un errore frequente è quello di mantenere a = a / 10; all'interno del corpo del ciclo for mentre l'intestazione contiene già a /= 10Il numero viene quindi diviso due volte per ogni passaggio, metà delle cifre vengono saltate e un vero palindromo come 121 viene erroneamente segnalato come non palindromo.

Programma palindromo in Java Utilizzo di Stringa Reverse

La conversione del valore in testo consente a StringBuilder di invertirlo con una sola chiamata. Lo stesso metodo funziona anche per le parole, cosa che l'approccio numerico non è in grado di gestire.

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 Produzione:

true
true
false

Programma palindromo in Java Utilizzo della ricorsione

La ricorsione confronta la coppia di caratteri più esterna e poi richiama se stessa sulla sezione centrale che si restringe. Il metodo si arresta quando rimangono meno di due caratteri.

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 Produzione:

34043 is palindrome: true
12345 is palindrome: false

Casi limite e confronto tra metodi

Tre input compromettono le implementazioni più semplici, quindi ogni versione dovrebbe essere testata rispetto a questi prima dell'uso.

  1. Numeri negativi: Valori come -121 non sono mai palindromi, perché il segno meno non ha un corrispettivo alla fine. Guardia con if (inputNumber < 0) return false;.
  2. Zeri finali: Il valore 100 si inverte in 1, quindi il confronto restituisce correttamente falso. Solo il numero 0 stesso passa tra i valori che terminano con zero.
  3. Overflow di interi: RevL'utilizzo di un intero molto grande come 1,999,999,999 può superare l'intervallo degli interi. Dichiarare `sum` come `long` quando l'input potrebbe avvicinarsi al limite.

La tabella seguente confronta i quattro approcci illustrati in questa pagina.

Metodo Complessità temporale Complessità spaziale Opere per le parole Note
Mentre loop O (log n) O (1) Non La dimostrazione più chiara dell'inversione delle cifre
Per loop O (log n) O (1) Non Logica identica, divisione solo nell'intestazione
Inverso di StringBuilder O (n) O (n) Si Codice più breve, alloca una nuova stringa
Ricorsione O (n) Stack O(n) Si Utile per le discussioni sui colloqui di lavoro in merito alla ricorsione.

La cifra extracLo schema di zione utilizzato qui riappare in molti esercizi. Continua con il serie di Fibonacci in Java, il Java programma per verificare un numero primo Bubble Algoritmo di ordinamento in Java. Per la sintassi del ciclo stesso, rivedere il per ogni ciclo in Java e il più ampio Java lezione, e vedi Java stringhe per il metodo basato sul testo.

DOMANDE FREQUENTI

No. Il segno meno appare solo all'inizio, quindi -121 invertito è 121- che non corrisponde mai. Aggiungi una condizione di controllo anticipata che restituisca falso per qualsiasi valore inferiore a zero.

La moltiplicazione sposta le cifre già raccolte di una posizione a sinistra, liberando così la posizione delle unità per le nuove cifre.traccifra ted. Questo ricostruisce il numero in ordine inverso.

Il valore invertito può superare il valore massimo di 2147483647 e andare a capo in un risultato negativo. Dichiarare l'accumulatore come long oppure confrontare i valori come stringhe.

Leggi il valore con Scanner e nextInt, quindi passalo alla stessa logica di inversione. Inserisci la lettura in un blocco try in modo che l'input non numerico non causi l'arresto anomalo del programma.

Di solito sì, quando viene richiesto esplicitamente di rivedere il codice. Raramente lo segnalano senza preavviso, quindi è sempre meglio testare un numero palindromo noto come 121 piuttosto che fidarsi di un esempio valido.

La domanda mette alla prova la gestione dei cicli, l'aritmetica intera e la capacità di ragionare sui casi limite in poche righe. Inoltre, rivela se il candidato verifica il codice generato dall'IA prima di inviarlo.

Riassumi questo post con: