Του Yuvraj Chandra
ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ

C ++, Python, C ή JavaScript: ανεξάρτητα από το τι χρησιμοποιείτε, χρησιμοποιήστε αυτόν τον αλγόριθμο για να προσδιορίσετε συμμετρικές συμβολοσειρές.

Μια συμβολοσειρά λέγεται ότι είναι συμμετρική εάν και τα δύο μισά της συμβολοσειράς είναι ίδια. Σε αυτό το άρθρο, θα μάθετε έναν αλγόριθμο για να καθορίσετε εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι. Θα μάθετε επίσης πώς να εφαρμόσετε αυτόν τον αλγόριθμο στις πιο δημοφιλείς γλώσσες προγραμματισμού όπως C ++, Python, C και JavaScript.

Δήλωση Προβλήματος

Σας δίνεται μια συμβολοσειρά. Πρέπει να καθορίσετε εάν η δεδομένη συμβολοσειρά είναι συμμετρική ή όχι.

Παράδειγμα 1: Αφήστε str = "abab".

Το δεδομένο είναι συμμετρικό καθώς και τα δύο μισά της συμβολοσειράς είναι ίδια.

Έτσι, η έξοδος είναι "Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική".

Παράδειγμα 2: Αφήστε str = "κυρία".

Εάν το μήκος της συμβολοσειράς είναι περιττό, ο μεσαίος χαρακτήρας της συμβολοσειράς αγνοείται. Επομένως, 1ο μισό = "ma" και 2ο μισό = "am". Τα δύο μισά δεν είναι ίδια.

instagram viewer

Έτσι, η έξοδος είναι "Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική".

Παράδειγμα 3: Αφήστε str = "madma".

1ο μισό = "ma" και 2ο μισό = "ma". Και τα δύο μισά της συμβολοσειράς είναι τα ίδια.

Έτσι, η έξοδος είναι "Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική".

Αλγόριθμος για τον προσδιορισμό του εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι

Μπορείτε να καθορίσετε εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι, ακολουθώντας την παρακάτω προσέγγιση:

  1. Βρείτε το μήκος της συμβολοσειράς.
  2. Βρείτε το midIndex της συμβολοσειράς.
    • Εάν το μήκος της συμβολοσειράς είναι ζυγό, midIndex = μήκος/2.
    • Εάν το μήκος της συμβολοσειράς είναι περιττό, midIndex = (μήκος/2) + 1. Σε αυτήν την περίπτωση, ο μεσαίος χαρακτήρας της συμβολοσειράς αγνοείται για σύγκριση.
  3. Αρχικοποιήστε δύο μεταβλητές δείκτη δείκτης 1 και δείκτη2. δείκτης 1 θα αποθηκεύσει το ευρετήριο του πρώτου χαρακτήρα (0) της συμβολοσειράς και δείκτη2 θα αποθηκεύσει το ευρετήριο του μεσαίου χαρακτήρα (midIndex) της συμβολοσειράς.
  4. Τώρα συγκρίνετε τους αντίστοιχους χαρακτήρες και των δύο μισών της συμβολοσειράς χρησιμοποιώντας ένα ενώ βρόχος. Εκτέλεση α ενώ βρόχο μέχρι δείκτης 1.
  5. Συγκρίνετε τους αντίστοιχους χαρακτήρες στα ευρετήρια δείκτης 1 και δείκτη2.
  6. Εάν κάποιος αντίστοιχος χαρακτήρας βρεθεί διαφορετικός, επιστρέψτε ψευδής. Και αν δεν βρεθούν διαφορετικοί αντίστοιχοι χαρακτήρες, επιστρέψτε αληθής.
  7. Επίσης, φροντίστε να αυξήσετε την τιμή του δείκτης 1 και δείκτη2 σε κάθε επανάληψη.

Πρόγραμμα C ++ για τον προσδιορισμό του εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι

Παρακάτω είναι το πρόγραμμα C ++ για να καθορίσετε εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι:

// Πρόγραμμα C ++ για να ελέγξετε εάν η συμβολοσειρά είναι συμμετρική ή όχι
#περιλαμβάνω
χρησιμοποιώντας το όνομα χώρου std.
// Λειτουργία για να ελέγξετε αν η συμβολοσειρά είναι συμμετρική ή όχι
bool isSymmetrical (συμβολοσειρά str)
{
int midIndex;
int μήκος = str.length ();
// Εάν το μήκος της συμβολοσειράς είναι ομοιόμορφο
αν (μήκος % 2 == 0)
{
midIndex = μήκος/2;
}
// Εάν το μήκος της συμβολοσειράς είναι περίεργο
αλλού
{
midIndex = μήκος/2 + 1;
}
int δείκτης 1 = 0;
int δείκτης2 = midIndex;
ενώ (δείκτης1{
εάν (str [pointer1] == str [pointer2])
{
δείκτης1 + = 1;
δείκτης2 + = 1;
}
αλλού
{
επιστροφή ψευδής?
}
}
επιστροφή αληθινή?
}
// Κωδικός οδηγού
int main ()
{
// Θήκη δοκιμής: 1
string str1 = "abab";
cout << "String 1:" << str1 << endl;
αν (isSymmetrical (str1))
{
cout << "Ναι, η συμβολοσειρά είναι συμμετρική" << endl;
}
αλλού
{
cout << "Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" << endl;
}
// Θήκη δοκιμής: 2
string str2 = "κυρία";
cout << "String 2:" << str2 << endl;
εάν (isSymmetrical (str2))
{
cout << "Ναι, η συμβολοσειρά είναι συμμετρική" << endl;
}
αλλού
{
cout << "Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" << endl;
}
// Θήκη δοκιμής: 3
string str3 = "madma";
cout << "String 3:" << str3 << endl;
αν (isSymmetrical (str3))
{
cout << "Ναι, η συμβολοσειρά είναι συμμετρική" << endl;
}
αλλού
{
cout << "Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" << endl;
}
// Θήκη δοκιμής: 4
string str4 = "civic";
cout << "String 4:" << str4 << endl;
αν (isSymmetrical (str4))
{
cout << "Ναι, η συμβολοσειρά είναι συμμετρική" << endl;
}
αλλού
{
cout << "Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" << endl;
}
// Θήκη δοκιμής: 5
string str5 = "khokho";
cout << "String 5:" << str5 << endl;
εάν (isSymmetrical (str5))
{
cout << "Ναι, η συμβολοσειρά είναι συμμετρική" << endl;
}
αλλού
{
cout << "Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" << endl;
}
επιστροφή 0?
}

Παραγωγή:

Συμβολοσειρά 1: abab
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική
Σειρά 2: κυρία
Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική
Σειρά 3: Madma
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική
Συμβολοσειρά 4: πολίτης
Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική
Σειρά 5: khokho
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική

Σχετίζεται με: Πώς να αντιστρέψετε μια συμβολοσειρά σε C ++, Python και JavaScript

Πρόγραμμα Python για τον προσδιορισμό του εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι

Παρακάτω είναι το πρόγραμμα Python για να καθοριστεί εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι:

# Πρόγραμμα Python για να ελέγξετε αν η συμβολοσειρά είναι συμμετρική ή όχι
# Λειτουργία για να ελέγξετε εάν η συμβολοσειρά είναι συμμετρική ή όχι
def isSymmetrical (str):
midIndex = 0
μήκος = len (str)
αν μήκος%2 == 0:
midIndex = μήκος // 2
αλλού:
midIndex = μήκος // 2 + 1
δείκτης 1 = 0
δείκτης 2 = midIndex
ενώ ο δείκτης1εάν (str [δείκτης 1] == str [δείκτης 2]):
δείκτης 1 += 1
δείκτης 2 += 1
αλλού:
επιστροφή False
επιστροφή True
# Δοκιμαστική θήκη: 1
str1 = "abab"
εκτύπωση ("String 1:", str1)
εάν (isSymmetrical (str1)):
εκτύπωση ("Ναι, η συμβολοσειρά είναι συμμετρική")
αλλού:
εκτύπωση ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική")
# Θήκη δοκιμής: 2
str2 = "κυρία"
εκτύπωση ("String 2:", str2)
εάν (isSymmetrical (str2)):
εκτύπωση ("Ναι, η συμβολοσειρά είναι συμμετρική")
αλλού:
εκτύπωση ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική")
# Θήκη δοκιμής: 3
str3 = "Madma"
εκτύπωση ("String 3:", str3)
εάν (isSymmetrical (str3)):
εκτύπωση ("Ναι, η συμβολοσειρά είναι συμμετρική")
αλλού:
εκτύπωση ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική")
# Θήκη δοκιμής: 4
str4 = "civic"
εκτύπωση ("String 4:", str4)
εάν (isSymmetrical (str4)):
εκτύπωση ("Ναι, η συμβολοσειρά είναι συμμετρική")
αλλού:
εκτύπωση ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική")
# Θήκη δοκιμής: 5
str5 = "khokho"
εκτύπωση ("String 5:", str5)
εάν (isSymmetrical (str5)):
εκτύπωση ("Ναι, η συμβολοσειρά είναι συμμετρική")
αλλού:
εκτύπωση ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική")

Παραγωγή:

Συμβολοσειρά 1: abab
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική
Σειρά 2: κυρία
Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική
Σειρά 3: Madma
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική
Συμβολοσειρά 4: πολίτης
Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική
Σειρά 5: khokho
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική

Σχετίζεται με: Μαθαίνω Python; Δείτε πώς μπορείτε να χειριστείτε τις χορδές

Πρόγραμμα JavaScript για να προσδιορίσετε αν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι

Ακολουθεί το πρόγραμμα JavaScript για να προσδιορίσετε εάν μια δεδομένη συμβολοσειρά είναι συμμετρική ή όχι:

// Πρόγραμμα JavaScript για να ελέγξετε εάν η συμβολοσειρά είναι συμμετρική ή όχι
// Λειτουργία για να ελέγξετε αν η συμβολοσειρά είναι συμμετρική ή όχι
συνάρτηση isSymmetrical (str) {
var midIndex;
var μήκος = str.length;
// Εάν το μήκος της συμβολοσειράς είναι ομοιόμορφο
αν (μήκος% 2 == 0) {
midIndex = Math.floor (μήκος / 2);
}
// Εάν το μήκος της συμβολοσειράς είναι περίεργο
αλλιώς {
midIndex = Math.floor (μήκος / 2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
ενώ (δείκτης1αν (str [pointer1] == str [pointer2]) {
δείκτης1 + = 1;
δείκτης2 + = 1;
} αλλιώς {
επιστροφή ψευδής?
}
}
επιστροφή αληθινή?
}
// Θήκη δοκιμής: 1
var str1 = "abab";
document.write ("Συμβολοσειρά 1:" + str1 + "
");
αν (είναι Συμμετρικό (str1)) {
document.write ("Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική" + "
");
} αλλιώς {
document.write ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" + "
");
}
// Θήκη δοκιμής: 2
var str2 = "κυρία";
document.write ("Συμβολοσειρά 2:" + str2 + "
");
αν (είναι Συμμετρικό (str2)) {
document.write ("Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική" + "
");
} αλλιώς {
document.write ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" + "
");
}
// Θήκη δοκιμής: 3
var str3 = "madma";
document.write ("Συμβολοσειρά 3:" + str3 + "
");
εάν (isSymmetrical (str3)) {
document.write ("Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική" + "
");
} αλλιώς {
document.write ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" + "
");
}
// Θήκη δοκιμής: 4
var str4 = "πολίτης";
document.write ("Συμβολοσειρά 4:" + str4 + "
");
εάν (isSymmetrical (str4)) {
document.write ("Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική" + "
");
} αλλιώς {
document.write ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" + "
");
}
// Θήκη δοκιμής: 5
var str5 = "khokho";
document.write ("Συμβολοσειρά 5:" + str5 + "
");
αν (είναι Συμμετρικό (str5)) {
document.write ("Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική" + "
");
} αλλιώς {
document.write ("Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική" + "
");
}

Παραγωγή:

Συμβολοσειρά 1: abab
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική
Σειρά 2: κυρία
Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική
Σειρά 3: Madma
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική
Συμβολοσειρά 4: πολίτης
Όχι, η δεδομένη συμβολοσειρά δεν είναι συμμετρική
Σειρά 5: khokho
Ναι, η δεδομένη συμβολοσειρά είναι συμμετρική

Σχετίζεται με: Πώς να βρείτε τον πιο συχνά εμφανιζόμενο χαρακτήρα σε μια συμβολοσειρά

Επίλυση προβλημάτων βάσει συμβολοσειρών

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

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Πώς να ελέγξετε εάν μια συμβολοσειρά είναι ένα Palindrome

Είναι η συμβολοσειρά σας ένα palindrome; Είτε χρησιμοποιείτε Python, C ++ ή JavaScript, χρησιμοποιήστε έναν από αυτούς τους αλγόριθμους για να μάθετε.

Διαβάστε Επόμενο

Σχετικά θέματα
  • Προγραμματισμός
  • JavaScript
  • Πύθων
  • Εκμάθηση κωδικοποίησης
  • Προγραμματισμός Γ
Σχετικά με τον Συγγραφέα
Yuvraj Chandra (Δημοσιεύθηκαν 50 άρθρα)

Ο Yuvraj είναι προπτυχιακός φοιτητής Πληροφορικής στο Πανεπιστήμιο του Δελχί της Ινδίας. Είναι παθιασμένος με το Full Stack Web Development. Όταν δεν γράφει, εξερευνά το βάθος διαφορετικών τεχνολογιών.

Περισσότερα από τον Yuvraj Chandra

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε