Πρόγραμμα αριθμού Palindrome in Java Χρήση while & for Loop
⚡ Έξυπνη Σύνοψη
Πρόγραμμα αριθμού Palindrome in Java καθορίζει εάν μια τιμή διαβάζεται πανομοιότυπα προς τα εμπρός και προς τα πίσω αντιστρέφοντας τα ψηφία της. Αυτό το άρθρο παρουσιάζει τον αλγόριθμο, μια έκδοση βρόχου while, μια έκδοση βρόχου for, μια μέθοδο που βασίζεται σε συμβολοσειρές, αναδρομή, περιπτώσεις ακμών και ανάλυση πολυπλοκότητας με επαληθευμένη έξοδο.
Τι είναι ο παλινδρομικός αριθμός;
A Αριθμός Palindrome είναι ένας αριθμός που παραμένει ο ίδιος όταν αντιστραφεί. Για παράδειγμα, 131. Όταν τα ψηφία του αντιστραφούν, παραμένει ο ίδιος αριθμός. Ένας παλίνδρομος αριθμός έχει συμμετρία ανάκλασης στον κατακόρυφο άξονα. Η ίδια ιδέα ισχύει για μια λέξη που έχει την ίδια ορθογραφία όταν τα γράμματά της αντιστραφούν.
Παραδείγματα παλινδρομικού αριθμού σε Java
121, 393, 34043, 111, 555, 48084
Παραδείγματα λέξεων παλίνδρομου
LOL, MADAM
Κάθε μονοψήφια τιμή από το 0 έως το 9 είναι εξ ορισμού παλίνδρομο, επειδή η αντιστροφή ενός ψηφίου παράγει το ίδιο ψηφίο.
Αλγόριθμος Παλίνδρομου Αριθμού
Παρακάτω είναι η λογική του αλγορίθμου παλινδρομικού αριθμού στο Java:
- Λάβετε τον αριθμό εισαγωγής που πρέπει να ελεγχθεί ως α παλίνδρομο.
- Αντιγράψτε τον αριθμό σε μια προσωρινή μεταβλητή και αντιστρέψτε τον.
- Συγκρίνετε τον αντίστροφο και τον αρχικό αριθμό.
- Αν είναι ίδιοι, ο αριθμός είναι ένας «αριθμός παλίνδρομου».
- Διαφορετικά, ο αριθμός δεν είναι «αριθμός παλίνδρομου».
Η ίδια η αντιστροφή είναι το μόνο μέρος που χρειάζεται προσοχή. Δύο αριθμητικές πράξεις κάνουν όλη τη δουλειά και ο παρακάτω πίνακας tracτα ισούται με την τιμή 171.
| Πέρασμα | ένα (υπόλοιπος αριθμός) | τελευταίαDigit = a % 10 | άθροισμα = (άθροισμα * 10) + τελευταίοDigit | α = α / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Μετά το τελικό πέρασμα, το άθροισμα ισχύει 171, το οποίο ισούται με την αρχική είσοδο, επομένως ο αριθμός επιβεβαιώνεται ως παλίνδρομο.
Πώς να ελέγξετε εάν ο αριθμός εισόδου είναι Palindrome ή όχι
Παρακάτω είναι ένα παλινδρομικό πρόγραμμα σε Java με έναν βρόχο WHILE. Ο βρόχος συνεχίζεται όσο παραμένουν τα ψηφία και οι εντολές print εκθέτουν την κατάσταση κάθε μεταβλητής κατά τη διάρκεια κάθε περάσματος.
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 Παραγωγή:
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
Πρόγραμμα για τον έλεγχο του Palindrome χρησιμοποιώντας βρόχο for
Παρακάτω είναι μια Java πρόγραμμα για παλίνδρομο χρησιμοποιώντας έναν βρόχο for. Η κεφαλίδα φέρει τον έλεγχο εξόδου και τη διαίρεση, επομένως το σώμα του βρόχου δεν πρέπει να διαιρεθεί ξανά.
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 Παραγωγή:
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
⚠️ Προειδοποίηση: Ένα συχνό λάθος είναι να κρατάμε a = a / 10; μέσα στο σώμα του βρόχου for ενώ η κεφαλίδα περιέχει ήδη a /= 10Ο αριθμός στη συνέχεια διαιρείται δύο φορές ανά πέρασμα, τα μισά ψηφία παραλείπονται και ένα γνήσιο παλίνδρομο όπως το 121 αναφέρεται εσφαλμένα ως μη παλίνδρομο.
Πρόγραμμα Palindrome σε Java Χρήση συμβολοσειράς Reverse
Η μετατροπή της τιμής σε κείμενο επιτρέπει στο StringBuilder να την αντιστρέψει με μία μόνο κλήση. Η ίδια μέθοδος λειτουργεί και για λέξεις, τις οποίες η αριθμητική προσέγγιση δεν μπορεί να χειριστεί.
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 Παραγωγή:
true true false
Πρόγραμμα Palindrome σε Java Χρήση Αναδρομής
Η αναδρομή συγκρίνει το εξώτερο ζεύγος χαρακτήρων και στη συνέχεια καλεί τον εαυτό της στο συρρικνούμενο μεσαίο τμήμα. Η μέθοδος σταματά όταν απομένουν λιγότεροι από δύο χαρακτήρες.
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 Παραγωγή:
34043 is palindrome: true 12345 is palindrome: false
Περιπτώσεις ακμής και σύγκριση μεθόδων
Τρεις είσοδοι διακόπτουν τις απλοϊκές υλοποιήσεις, επομένως κάθε έκδοση θα πρέπει να δοκιμάζεται σε σχέση με αυτές πριν από τη χρήση.
- Αρνητικοί αριθμοί: Τιμές όπως -121 δεν είναι ποτέ παλίνδρομα, επειδή το σύμβολο μείον δεν έχει αντίστοιχο στο τέλος. Προσέξτε με
if (inputNumber < 0) return false;. - Τελικά μηδενικά: Η τιμή 100 αντιστρέφεται σε 1, επομένως η σύγκριση επιστρέφει σωστά την τιμή false. Μόνο ο ίδιος ο αριθμός 0 περνάει ανάμεσα σε τιμές που τελειώνουν σε μηδέν.
- Υπερχείλιση ακεραίων: RevΗ χρήση ενός μεγάλου ακέραιου αριθμού, όπως 1,999,999,999, μπορεί να υπερβεί το εύρος ακεραίων. Δηλώστε το άθροισμα ως long όταν η είσοδος μπορεί να πλησιάσει το όριο.
Ο παρακάτω πίνακας συγκρίνει τις τέσσερις προσεγγίσεις που παρουσιάζονται σε αυτήν τη σελίδα.
| Μέθοδος | Χρόνος πολυπλοκότητας | Διαστημική πολυπλοκότητα | Έργα για λέξεις | Σημειώσεις |
|---|---|---|---|---|
| Ενώ βρόχος | O (ημερολόγιο n) | Ο (1) | Οχι | Η πιο ξεκάθαρη επίδειξη αντιστροφής ψηφίων |
| Για βρόχο | O (ημερολόγιο n) | Ο (1) | Οχι | Πανομοιότυπη λογική, διαίρεση μόνο στην κεφαλίδα |
| Αντίστροφη λειτουργία StringBuilder | O (n) | O (n) | Ναι | Ο συντομότερος κώδικας, εκχωρεί μια νέα συμβολοσειρά |
| Αναδρομή | O (n) | Στοίβα O(n) | Ναι | Χρήσιμο για συζητήσεις συνεντεύξεων σχετικά με την αναδρομή |
Το ψηφίο extracΤο μοτίβο αγωγής που χρησιμοποιείται εδώ επανεμφανίζεται σε πολλές ασκήσεις. Συνεχίστε με Η σειρά Φιμπονάτσι στο Java, Java πρόγραμμα για τον έλεγχο ενός πρώτου αριθμού, και το Bubble Αλγόριθμος ταξινόμησης σε JavaΓια την ίδια τη σύνταξη του βρόχου, εξετάστε το για κάθε βρόχο στο Java και το ευρύτερο Java φροντιστήριο, και δες Java χορδές για τη μέθοδο που βασίζεται σε κείμενο.

