Ένα παλίνδρομο είναι μια λέξη, φράση, αριθμός ή μια άλλη ακολουθία μονάδων που μπορεί να διαβαστεί με τον ίδιο τρόπο προς οποιαδήποτε κατεύθυνση, με γενικές δυνατότητες προσαρμογής στα σημεία στίξης και διαιρέτες λέξεων. Όταν τα ψηφία του αντιστρέφονται, αποδεικνύεται ότι είναι ο ίδιος αριθμός με τον αρχικό αριθμό. Τα παλίνδρομα μπορούν επίσης να είναι αριθμητικά. Για παράδειγμα, κυρία, 1234321. Αυτό το ιστολόγιο θα μας διδάξει πώς να δημιουργήσουμε ένα Palindrome στην Python.
Εάν θέλετε να βουτήξετε περαιτέρω, ελέγξτε από αυτό το δωρεάν μάθημα για το Palindrome στην Python και τα PG Programs on Software Engineering. Καλύπτει τις βασικές αρχές του προγραμματισμού python, όπως η σύνταξη, οι μεταβλητές, οι τύποι δεδομένων, οι τελεστές, τα διακριτικά και οι συμβολοσειρές του. Αυτό το μάθημα σας προσφέρει επίσης ένα πιστοποιητικό κατά την ολοκλήρωση για να σας βοηθήσει να μείνετε μπροστά από τον ανταγωνισμό.
- Τι είναι το Palindrome
- Τι είναι ο αριθμός Palindrome
- Τι είναι μια χορδή Palindrome
- Τι είναι η φράση Palindrome
- Παραδείγματα Palindrome
- Palindrome σε Python Algorithm
- Palindrome στον κώδικα Python
ένα. χρησιμοποιώντας βρόχο while
σι. Χρήση αντίστροφης λειτουργίας - Ελέγξτε εάν μια Συνδεδεμένη λίστα είναι Palindrome
Τι είναι το Palindrome;
Ένα παλίνδρομο είναι μια λέξη, φράση, αριθμός ή άλλη ακολουθία μονάδων που μπορεί να διαβαστεί με τον ίδιο τρόπο προς οποιαδήποτε κατεύθυνση, γενικά εάν χρησιμοποιείται διαχωρισμένη με κόμμα.
Καλή καθυστερημένη πολυπολιτισμική ημέρα παλίνδρομου! Η 02/02/2020 ήταν μια μοναδική μέρα του Φεβρουαρίου. Λειτουργεί είτε η προτιμώμενη μορφή ημερομηνίας είναι ΜΜ/ΗΗ/ΕΕΕΕ είτε ΗΗ/ΜΜ/ΕΕΕΕ είτε ΕΕΕΕ/ΜΜ/ΗΗ.
Αυτά τα σχέδια ονομάζονται παλίνδρομα. Η ανάγνωση τους από τον πρώτο χαρακτήρα ή προς τα πίσω δεν έχει καμία διαφορά. Αυτό είναι ένα ενδιαφέρον εισαγωγικό πρόβλημα για επίλυση με τη χρήση προγραμματισμού. Σε αυτό το ιστολόγιο, θα κατανοήσουμε τη διαδικασία σκέψης, θα προχωρήσουμε βήμα προς βήμα και θα βρούμε διάφορες λύσεις για να ελέγξουμε αν η χορδή είναι παλίνδρομο.
Ένα παλίνδρομο είναι λέξη, φράση, αριθμός, ή άλλη ακολουθία χαρακτήρων που διαβάζει το ίδιο προς τα πίσω με τα εμπρός.
Ταξινομούνται σε 3 τύπους, οι οποίοι είναι οι αριθμοί Palindrome,
Χορδές Palindrome, φράση Palindrome: Μια συλλογή λέξεων και ειδικών χαρακτήρων.
Τι είναι ο αριθμός Palindrome;
Ο αριθμός Palindrome είναι μια συλλογή αριθμών που παραμένει ίδια όταν διαβάζεται προς τα πίσω. Αυτοί οι αριθμοί λέγεται επίσης ότι είναι συμμετρικοί. Όταν τα ψηφία του αντιστρέφονται, αποδεικνύεται ότι είναι ο ίδιος αριθμός με τον αρχικό αριθμό. Π.χ., το 1234321 είναι ένα Palindrome. Αν αντιστραφούν τα ψηφία του, γίνεται πάλι 1234321, ο αρχικός μας αριθμός. Το 1234232 δεν είναι Palindrome. Όταν αντιστραφεί, ο νέος αριθμός γίνεται 2324321, ο οποίος είναι διαφορετικός από τον αρχικό.
Τι είναι μια χορδή Palindrome;
Μια συμβολοσειρά Palindrome είναι μια συλλογή αλφαβήτων που παραμένει ίδια όταν διαβάζεται προς τα πίσω. Ονομάζονται και Συμμετρικά Αλφάβητα. Όταν τα αλφάβητά του γράφονται με αντίστροφη σειρά, αποδεικνύεται ότι είναι ο ίδιος συνδυασμός αλφαβήτων με την αρχική συμβολοσειρά. Π.χ., η „κυρία“ είναι ένα Palindrome. Αν αντιστραφούν τα αλφάβητά του, γίνεται ξανά «κυρία», που ήταν η αρχική μας χορδή. Η „πετσέτα“ δεν είναι Palindrome. Όταν αντιστραφεί, ο νέος αριθμός γίνεται „nikpan“ που είναι διαφορετικός από την αρχική συμβολοσειρά.
Τι είναι η φράση Palindrome;
Η φράση Palindrome είναι μια συλλογή λέξεων και ειδικών χαρακτήρων που παραμένει η ίδια όταν διαβάζεται προς τα πίσω. Αυτές οι φράσεις λέγεται επίσης ότι είναι συμμετρικές. Όταν η φράση αντιστρέφεται, αποδεικνύεται ότι είναι η ίδια ακριβώς φράση με την αρχική. Για παράδειγμα: a1b2c33c2b1a είναι ένα παλίνδρομο. Εάν η φράση αντιστραφεί, γίνεται και πάλι a1b2c33c2b1a, η αρχική μας φράση. Το a4b523kg δεν είναι Palindrome. Όταν αντιστραφεί, ο νέος αριθμός γίνεται gk325b4a που είναι διαφορετικός από την αρχική φράση.
Η φράση Palindrome είναι μια συλλογή λέξεων και ειδικών χαρακτήρων που παραμένει η ίδια όταν διαβάζεται προς τα πίσω. Αυτές οι φράσεις λέγεται επίσης ότι είναι συμμετρικές. Όταν η φράση αντιστρέφεται, αποδεικνύεται ότι είναι η ίδια ακριβώς φράση με την αρχική. Για παράδειγμα: a1b2c33c2b1a είναι ένα παλίνδρομο. Εάν η φράση αντιστραφεί, γίνεται και πάλι a1b2c33c2b1a, η αρχική μας φράση. Το a4b523kg δεν είναι Palindrome. Όταν αντιστραφεί, ο νέος αριθμός γίνεται gk325b4a που είναι διαφορετικός από την αρχική φράση.
Η φράση Palindrome είναι μια συλλογή λέξεων και ειδικών χαρακτήρων που παραμένει η ίδια όταν διαβάζεται προς τα πίσω. Αυτές οι φράσεις λέγεται επίσης ότι είναι συμμετρικές. Όταν η φράση αντιστρέφεται, αποδεικνύεται ότι είναι η ίδια ακριβώς φράση με την αρχική. Για παράδειγμα: a1b2c33c2b1a είναι ένα παλίνδρομο. Εάν η φράση αντιστραφεί, γίνεται και πάλι a1b2c33c2b1a, η αρχική μας φράση. Το a4b523kg δεν είναι Palindrome. Όταν αντιστραφεί, ο νέος αριθμός γίνεται gk325b4a που είναι διαφορετικός από την αρχική φράση.
Η φράση Palindrome είναι μια συλλογή λέξεων και ειδικών χαρακτήρων που παραμένει η ίδια όταν διαβάζεται προς τα πίσω. Αυτές οι φράσεις λέγεται επίσης ότι είναι συμμετρικές. Όταν η φράση αντιστρέφεται, αποδεικνύεται ότι είναι η ίδια ακριβώς φράση με την αρχική. Για παράδειγμα: a1b2c33c2b1a είναι ένα παλίνδρομο. Εάν η φράση αντιστραφεί, γίνεται και πάλι a1b2c33c2b1a, η αρχική μας φράση. Το a4b523kg δεν είναι Palindrome. Όταν αντιστραφεί, ο νέος αριθμός γίνεται gk325b4a που είναι διαφορετικός από την αρχική φράση.
Παραδείγματα Palindrome
Παρακάτω είναι μερικά παραδείγματα Palindromes:
- Μαμά
- Κυρία
- a2332a
- Καουτσούκ
- Μπαμπάς
- 123454321
Trivia: Είναι η 02/02/2020 μια συμβολοσειρά παλίνδρομου όταν θεωρείται φράση παλίνδρομου;
Palindrome σε αλγόριθμο Python
Μπορείτε να εγγραφείτε σε αυτά τα μαθήματα που σχετίζονται με την Python για να νιώσετε άνετα στη γλώσσα προγραμματισμού Python και να λάβετε το δωρεάν πιστοποιητικό σας στο Great Learning Academy πριν εξασκήσετε τον αλγόριθμο και τον κώδικα Palindromes στην Python.
Τώρα πώς να δημιουργήσετε Palindromes στην Python;
Εξετάστε τον αλγόριθμο για τη Δήλωση Προβλήματος: Βρείτε αν α σειρά είναι παλίνδρομο ή όχι.
- Ελέγξτε εάν το πρώτο και το τελευταίο γράμμα ευρετηρίου είναι τα ίδια. αν όχι το ίδιο, επιστρέψτε ψευδές.
- Επαναλάβετε το βήμα 2 αυξάνοντας τον πρώτο δείκτη και μειώνοντας τον τελευταίο δείκτη
- Επαναλάβετε το βήμα 3 ενώ πρώτο < τελευταίο Εάν(πρώτο > τελευταίο) και μετά επιστρέψτε True
Ας εξετάσουμε τώρα έναν αλγόριθμο για τη Δήλωση Προβλήματος: Βρείτε αν α αριθμός είναι παλίνδρομο ή όχι.
- Αντιγράψτε τον αριθμό εισαγωγής σε άλλη μεταβλητή για να τους συγκρίνετε αργότερα.
- Στη συνέχεια, αντιστρέφουμε τον αριθμό που δίνεται. Για να αντιστρέψετε τον αριθμό, ακολουθήστε τα εξής βήματα:
- Απομονώστε το τελευταίο ψηφίο ενός αριθμού. Ο τελεστής modulo (%) επιστρέφει το υπόλοιπο μιας διαίρεσης
- Προσθήκη lastDigit για αντιστροφή. αντίστροφη = (αντίστροφη * 10) + lastDigit.
- Αφαιρέστε το τελευταίο ψηφίο από τον αριθμό. αριθμός = αριθμός / 10.
- Επαναλάβετε αυτή τη διαδικασία. ενώ (αριθμός > 0)
- Τώρα συγκρίνουμε τον αντίστροφο αριθμό με τον αρχικό αριθμό.
- Εάν οι αριθμοί είναι ίδιοι, τότε ο αριθμός είναι παλίνδρομος, διαφορετικά δεν είναι
Τώρα που έχουμε τον αλγόριθμο, ας τον μετατρέψουμε σε κώδικα ακολουθώντας παρόμοια λογική.
Palindrome στον κώδικα Python
Χρήση βρόχου while (αριθμός)
number=int(input("Enter any number :"))
#store a copy of this number
temp=number
#calculate reverse of this number
reverse_num=0
while(number>0):
#extract last digit of this number
digit=number%10
#append this digit in reveresed number
reverse_num=reverse_num*10+digit
#floor divide the number leave out the last digit from number
number=number//10
#compare reverse to original number
if(temp==reverse_num):
print("The number is palindrome!")
else:
print("Not a palindrome!")
Χρήση συμβολοσειρών βρόχου while
def check_palindrome(string):
length = len(string)
first = 0
last = length -1
status = 1
while(first<last):
if(string[first]==string[last]):
first=first+1
last=last-1
else:
status = 0
break
return int(status)
string = input("Enter the string: ")
print("Method 1")
status= check_palindrome(string)
if(status):
print("It is a palindrome ")
else:
print("Sorry! Try again")
Εισαγωγή – Κυρία
Έξοδος – Είναι παλίνδρομο
Αυτή είναι μια καλή προσέγγιση, αλλά Η Python μας δίνει τη δυνατότητα να χρησιμοποιήσουμε την αντίστροφη συνάρτηση. Γνωρίζουμε ότι μια λέξη που διαβάζεται προς τα εμπρός και προς τα πίσω αν η ίδια είναι παλίνδρομο. Επομένως, ας δημιουργήσουμε τις συμβολοσειρές προς τα εμπρός και προς τα πίσω για το ίδιο και να ελέγξουμε αν οι δύο συμβολοσειρές είναι ίδιες.
Χρήση της αντίστροφης λειτουργίας
def check_palindrome_1(string):
reversed_string = string[::-1]
status=1
if(string!=reversed_string):
status=0
return status
string = input("Enter the string: ")
status= check_palindrome_1(string)
if(status):
print("It is a palindrome ")
else:
print("Sorry! Try again")
Εισαγωγή: Εισαγάγετε τη συμβολοσειρά: malayalam
Παραγωγή: Είναι παλίνδρομο
Αυτή είναι μια καλή προσέγγιση, αλλά Η Python μας δίνει τη δυνατότητα να χρησιμοποιήσουμε την αντίστροφη συνάρτηση. Γνωρίζουμε ότι μια λέξη διαβάζεται προς τα εμπρός και προς τα πίσω εάν η ίδια είναι ένα παλινδρομο. Επομένως, ας δημιουργήσουμε τις συμβολοσειρές προς τα εμπρός και προς τα πίσω για το ίδιο και να ελέγξουμε αν οι δύο συμβολοσειρές είναι ίδιες.
Χρήση της αντίστροφης λειτουργίας
def check_palindrome_1(string):
reversed_string = string[::-1]
status=1
if(string!=reversed_string):
status=0
return status
string = input("Enter the string: ")
status= check_palindrome_1(string)
if(status):
print("It is a palindrome ")
else:
print("Sorry! Try again")
Εισαγωγή: Εισαγάγετε τη συμβολοσειρά: malayalam
Έξοδος: Είναι παλίνδρομο
Το πρόγραμμα Palindrome σε Python
Σε αυτό το άρθρο, θα δούμε διαφορετικούς τρόπους υλοποίησης του προγράμματος palindrome στην Python
Χορδή Palindrome
Μέθοδος 1:
- Βρίσκοντας το πίσω μέρος μιας συμβολοσειράς
- Έλεγχος αν το πίσω και το πρωτότυπο είναι το ίδιο ή όχι
def isPalindrome(s):
return s == s[::-1]
# Driver code
s = "kayak"
ans = isPalindrome(s)
if ans:
print("Yes")
else:
print("No")
Βήματα:
- Δημιουργούμε μια συνάρτηση ispalindrome
- Επιστρέψτε μια μεταβλητή κόβοντας την παράμετρο αντίστροφα
- Στον κωδικό του προγράμματος οδήγησης, γράψαμε μια συμβολοσειρά
- Τέλος, στην συνθήκη if-else, εκτελούμε εάν είναι εκτύπωση παλίνδρομου ναι ή εκτύπωση όχι
Μέθοδος 2:
def isPalindrome(str):
for i in range(O, int(len(str)/2)):
if str[i] != str[len(str)-i-1]:
return False
return True
# main function
s = "kayak"
ans = isPalindrome(s)
if (ans):
print("Yes")
else:
print("No")
Βήματα:
- Ένας βρόχος εκτελείται από την αρχή μέχρι το μισό μήκος και ελέγχοντας τον πρώτο χαρακτήρα έως τον τελευταίο χαρακτήρα της συμβολοσειράς.
- Και ελέγξτε από τον δεύτερο χαρακτήρα στον δεύτερο τελευταίο χαρακτήρα της συμβολοσειράς.
- Εάν κάποιος από τους χαρακτήρες είναι αναντιστοιχία, δεν είναι παλίνδρομο.
Μέθοδος 3:
- Χρησιμοποιώντας την ενσωματωμένη συνάρτηση για να αντιστρέψετε μια συμβολοσειρά
def isPalindrome(s):
rev = ‘'.join(reversed(s))
if (s == rev):
return True
return False
# main function
s = "kayak"
ans = isPalindrome(s)
if(ans):
print("Yes")
else:
print("No")
Βήματα:
Σε αυτή τη μέθοδο, χρησιμοποιούμε μια προκαθορισμένη συνάρτηση ‚.join‘
Μέθοδος 4:
def isPalindrome(s):
s = s.lower()
1 = len(s)
if 1 <2:
return True
elif s(0) == s{l - 1):
return isPalindrome(s[1: l - 1])
else:
return False
s = "Kayak"
ans = isPalindrome(s)
if ans:
print("Yes")
y else:
print("No")
Βήματα:
Αυτή η μέθοδος συγκρίνει το πρώτο και το τελευταίο στοιχείο της συμβολοσειράς και δίνει στην υπόλοιπη υποσυμβολοσειρά μια αναδρομική κλήση στον εαυτό της.
Palindrome σε μια συνδεδεμένη λίστα
Ας το βελτιώσουμε και ας εξετάσουμε μια άλλη δομή δεδομένων. Τι γίνεται αν τα δεδομένα είναι αποθηκευμένα σε μια συνδεδεμένη λίστα; Για να το αντιμετωπίσουμε, πρέπει να κατανοήσουμε τις συνδεδεμένες λίστες. Μια συνδεδεμένη λίστα isa δομή δεδομένων με μη συνεχόμενη κατανομή μνήμης.
Θα ξεκινήσουμε ορίζοντας μια συνδεδεμένη λίστα στην python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def __init__(self,seq):
"""prepends item of lists into linked list"""
self.head = None
for item in seq:
node = ListNode(item)
node.next = self.head
self.head = node
def palindrome(self):
""" Check if linked list is palindrome and return True/False."""
node = self.head
var = node #var is initialized to head
prev = None #initially, prev is None
# prev approaches to middle of list till var reaches end or None
while var and var.next:
var = var.next.next
temp = node.next #reverse elements of first half of list
node.next = prev
prev = node
node = temp
if var: # in case of odd num elements
tail = node.next
else: # in case of even num elements
tail = node
while prev:
# compare reverse element and next half elements
if prev.val == tail.val:
tail = tail.next
prev = prev.next
else:
return False
return True
# Test Cases
list_1 = Solution([7, 8, 6 , 3 , 7 ,3 , 6, 8, 7])
print([7, 8, 6 , 3 , 7 ,3 , 6, 8, 7],end='->')
print(list_1.palindrome())
list_2 = Solution([6 , 3 , 4, 6])
print([6 , 3 , 4, 6],end='->')
print(list_2.palindrome())
list_3 = Solution([3, 7 ,3 ])
print([ 3 , 7, 3],end='->')
print(list_3.palindrome())
list_4 = Solution([1])
print([1],end='->')
print( list_4.palindrome())
Έξοδος –
3, 7, 3 – Σωστό
1 – Σωστό
Η λογική για τον έλεγχο εάν μια συνδεδεμένη λίστα είναι παλίνδρομο ή όχι είναι η τροποποιημένη έκδοση αυτής που εφαρμόσαμε σε συμβολοσειρές και πίνακες. Ελέγχουμε αν το πίσω μέρος της συνδεδεμένης λίστας είναι το ίδιο με την αρχική ακολουθία. Αντί να αντιστρέψουμε ολόκληρη τη συνδεδεμένη λίστα και να την αποθηκεύσουμε σε μια προσωρινή τοποθεσία, αντιστρέφουμε το πρώτο μισό της συνδεδεμένης λίστας και ελέγχουμε εάν το πρώτο μισό και το δεύτερο ημίχρονο ταιριάζουν μετά την αντιστροφή.
Δείτε έναν* Αλγόριθμο στην Τεχνητή Νοημοσύνη.
Επομένως, ορίζουμε μια συνάρτηση που ονομάζεται palindrome, η οποία έχει παραμέτρους κόμβο, var( σημαίνει μεταβλητή), previous και temp. Μεταβαίνουμε στο τέλος της λίστας χρησιμοποιώντας τη μεταβλητή var στη γραμμή 29, και εν τω μεταξύ, αποθηκεύουμε τα δεδομένα του τελευταίου κόμβου στη μεταβλητή prev. Επομένως, η σύγκριση των prev.val και tail.val στη γραμμή 41 μας δίνει την απάντηση.
# Test Cases
list_1 = Solution([7, 8, 6 , 3 , 7 ,3 , 6, 8, 7])
print(list_1.palindrome())
list_2 = Solution([6 , 3 , 4, 6])
print(list_2.palindrome())
list_3 = Solution([3, 7 ,3 ])
print(list_3.palindrome())
listl_4 = Solution([1])
Print( list_4.palindrome())
Σε αυτό το άρθρο, εξετάσαμε τα παλίνδρομα μέσα και έξω και τα κατανοήσαμε διεξοδικά. Προσπαθήστε να αναπτύξετε καλύτερες τεχνικές υλοποίησης χρησιμοποιώντας διαφορετικές δομές δεδομένων για να βελτιώσετε την εντολή σας στην κωδικοποίηση. Θα συνεχίσουμε να δημοσιεύουμε πολλά περισσότερα άρθρα σχετικά με την υλοποίηση δομών δεδομένων και αλγορίθμων με χρήση της Python Μείνετε συντονισμένοι και διαβάστε τα δέκα κορυφαία βιβλία Python.
Περαιτέρω ανάγνωση
- Παραγοντικό ενός αριθμού στην Python
- Μετατροπή λίστας σε συμβολοσειρά στην Python
- Σειρά Fibonacci σε Python
- Εκμάθηση Python
- Συνάρτηση Eval στην Python
Ξεκινήστε το Python Journey σας με Great Learning, το οποίο προσφέρει δωρεάν μάθημα Python με εκπαίδευση παγκόσμιας κλάσης. Είτε σας ενδιαφέρει η μηχανική μάθηση, η εξόρυξη δεδομένων ή η ανάλυση δεδομένων, το Great Learning έχει ένα μάθημα για εσάς!