Τι είναι το Palindrome στην Python; Κώδικες, αλγόριθμοι και άλλα

0
Τι είναι το Palindrome στην Python;  Κώδικες, αλγόριθμοι και άλλα

Ένα παλίνδρομο είναι μια λέξη, φράση, αριθμός ή μια άλλη ακολουθία μονάδων που μπορεί να διαβαστεί με τον ίδιο τρόπο προς οποιαδήποτε κατεύθυνση, με γενικές δυνατότητες προσαρμογής στα σημεία στίξης και διαιρέτες λέξεων. Όταν τα ψηφία του αντιστρέφονται, αποδεικνύεται ότι είναι ο ίδιος αριθμός με τον αρχικό αριθμό. Τα παλίνδρομα μπορούν επίσης να είναι αριθμητικά. Για παράδειγμα, κυρία, 1234321. Αυτό το ιστολόγιο θα μας διδάξει πώς να δημιουργήσουμε ένα Palindrome στην Python.

Εάν θέλετε να βουτήξετε περαιτέρω, ελέγξτε από αυτό το δωρεάν μάθημα για το Palindrome στην Python και τα PG Programs on Software Engineering. Καλύπτει τις βασικές αρχές του προγραμματισμού python, όπως η σύνταξη, οι μεταβλητές, οι τύποι δεδομένων, οι τελεστές, τα διακριτικά και οι συμβολοσειρές του. Αυτό το μάθημα σας προσφέρει επίσης ένα πιστοποιητικό κατά την ολοκλήρωση για να σας βοηθήσει να μείνετε μπροστά από τον ανταγωνισμό.

  1. Τι είναι το Palindrome
  2. Τι είναι ο αριθμός Palindrome
  3. Τι είναι μια χορδή Palindrome
  4. Τι είναι η φράση Palindrome
  5. Παραδείγματα Palindrome
  6. Palindrome σε Python Algorithm
  7. Palindrome στον κώδικα Python
    ένα. χρησιμοποιώντας βρόχο while
    σι. Χρήση αντίστροφης λειτουργίας
  8. Ελέγξτε εάν μια Συνδεδεμένη λίστα είναι Palindrome

Τι είναι το Palindrome;

Ένα παλίνδρομο είναι μια λέξη, φράση, αριθμός ή άλλη ακολουθία μονάδων που μπορεί να διαβαστεί με τον ίδιο τρόπο προς οποιαδήποτε κατεύθυνση, γενικά εάν χρησιμοποιείται διαχωρισμένη με κόμμα.

Καλή καθυστερημένη πολυπολιτισμική ημέρα παλίνδρομου! Η 02/02/2020 ήταν μια μοναδική μέρα του Φεβρουαρίου. Λειτουργεί είτε η προτιμώμενη μορφή ημερομηνίας είναι ΜΜ/ΗΗ/ΕΕΕΕ είτε ΗΗ/ΜΜ/ΕΕΕΕ είτε ΕΕΕΕ/ΜΜ/ΗΗ.

Παράδειγμα Palindrome

Αυτά τα σχέδια ονομάζονται παλίνδρομα. Η ανάγνωση τους από τον πρώτο χαρακτήρα ή προς τα πίσω δεν έχει καμία διαφορά. Αυτό είναι ένα ενδιαφέρον εισαγωγικό πρόβλημα για επίλυση με τη χρήση προγραμματισμού. Σε αυτό το ιστολόγιο, θα κατανοήσουμε τη διαδικασία σκέψης, θα προχωρήσουμε βήμα προς βήμα και θα βρούμε διάφορες λύσεις για να ελέγξουμε αν η χορδή είναι παλίνδρομο.

Ένα παλίνδρομο είναι λέξη, φράση, αριθμός, ή άλλη ακολουθία χαρακτήρων που διαβάζει το ίδιο προς τα πίσω με τα εμπρός.

Ταξινομούνται σε 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;

Εξετάστε τον αλγόριθμο για τη Δήλωση Προβλήματος: Βρείτε αν α σειρά είναι παλίνδρομο ή όχι.

  1. Ελέγξτε εάν το πρώτο και το τελευταίο γράμμα ευρετηρίου είναι τα ίδια. αν όχι το ίδιο, επιστρέψτε ψευδές.
  2. Επαναλάβετε το βήμα 2 αυξάνοντας τον πρώτο δείκτη και μειώνοντας τον τελευταίο δείκτη
  3. Επαναλάβετε το βήμα 3 ενώ πρώτο < τελευταίο Εάν(πρώτο > τελευταίο) και μετά επιστρέψτε True

Ας εξετάσουμε τώρα έναν αλγόριθμο για τη Δήλωση Προβλήματος: Βρείτε αν α αριθμός είναι παλίνδρομο ή όχι.

  1. Αντιγράψτε τον αριθμό εισαγωγής σε άλλη μεταβλητή για να τους συγκρίνετε αργότερα.
  2. Στη συνέχεια, αντιστρέφουμε τον αριθμό που δίνεται. Για να αντιστρέψετε τον αριθμό, ακολουθήστε τα εξής βήματα:
    1. Απομονώστε το τελευταίο ψηφίο ενός αριθμού. Ο τελεστής modulo (%) επιστρέφει το υπόλοιπο μιας διαίρεσης
    2. Προσθήκη lastDigit για αντιστροφή. αντίστροφη = (αντίστροφη * 10) + lastDigit.
    3. Αφαιρέστε το τελευταίο ψηφίο από τον αριθμό. αριθμός = αριθμός / 10.
    4. Επαναλάβετε αυτή τη διαδικασία. ενώ (αριθμός > 0)
  3. Τώρα συγκρίνουμε τον αντίστροφο αριθμό με τον αρχικό αριθμό.
  4. Εάν οι αριθμοί είναι ίδιοι, τότε ο αριθμός είναι παλίνδρομος, διαφορετικά δεν είναι

Τώρα που έχουμε τον αλγόριθμο, ας τον μετατρέψουμε σε κώδικα ακολουθώντας παρόμοια λογική.

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:

  1. Βρίσκοντας το πίσω μέρος μιας συμβολοσειράς
  2. Έλεγχος αν το πίσω και το πρωτότυπο είναι το ίδιο ή όχι
def isPalindrome(s):
	return s == s[::-1]

# Driver code
s = "kayak"
ans = isPalindrome(s)

if ans:
	print("Yes")

else:
	print("No")

Βήματα:

  1. Δημιουργούμε μια συνάρτηση ispalindrome
  2. Επιστρέψτε μια μεταβλητή κόβοντας την παράμετρο αντίστροφα
  3. Στον κωδικό του προγράμματος οδήγησης, γράψαμε μια συμβολοσειρά
  4. Τέλος, στην συνθήκη 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")

Βήματα:

  1. Ένας βρόχος εκτελείται από την αρχή μέχρι το μισό μήκος και ελέγχοντας τον πρώτο χαρακτήρα έως τον τελευταίο χαρακτήρα της συμβολοσειράς.
  2. Και ελέγξτε από τον δεύτερο χαρακτήρα στον δεύτερο τελευταίο χαρακτήρα της συμβολοσειράς.
  3. Εάν κάποιος από τους χαρακτήρες είναι αναντιστοιχία, δεν είναι παλίνδρομο.

Μέθοδος 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.

Περαιτέρω ανάγνωση

  1. Παραγοντικό ενός αριθμού στην Python
  2. Μετατροπή λίστας σε συμβολοσειρά στην Python
  3. Σειρά Fibonacci σε Python
  4. Εκμάθηση Python
  5. Συνάρτηση Eval στην Python

Ξεκινήστε το Python Journey σας με Great Learning, το οποίο προσφέρει δωρεάν μάθημα Python με εκπαίδευση παγκόσμιας κλάσης. Είτε σας ενδιαφέρει η μηχανική μάθηση, η εξόρυξη δεδομένων ή η ανάλυση δεδομένων, το Great Learning έχει ένα μάθημα για εσάς!

Schreibe einen Kommentar