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

Χρειάζεστε εκτύπωση των μεταθέσεων μιας συμβολοσειράς; Θα σας δείξουμε πώς σε πολλές γλώσσες.

Η μετάθεση είναι μια διάταξη αντικειμένων σε μια συγκεκριμένη σειρά. Μπορείτε να αλλάξετε μια συμβολοσειρά μήκους n σε n! τρόπους.

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

Πώς λειτουργούν οι μεταθέσεις;

Ας υποθέσουμε ότι έχετε συμβολοσειρά str με "MUO" ως τιμές συμβολοσειράς. Σας ζητήθηκε να εμφανίσετε τις εναλλαγές της συμβολοσειράς. Δείτε πώς θα το κάνατε:

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

Οι μεταθέσεις του "MUO" είναι:

  • “MUO”
  • "MOU"
  • “UMO”
  • “UOM”
  • “ΟΥΜ”
  • “OMU”

Σημειώστε τη σειρά των τιμών. Εδώ είναι ένα άλλο παράδειγμα:

Παράδειγμα 2: Αφήστε str = "AB"

Όλες οι μεταθέσεις του "AB" είναι:

  • “AB”
  • “BA”

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

instagram viewer

Τώρα που καταλαβαίνετε πώς λειτουργούν οι μεταθέσεις, ας ρίξουμε μια ματιά στο πώς μπορείτε να τις βρείτε χρησιμοποιώντας τη γλώσσα προγραμματισμού που προτιμάτε.

Σημείωση: Έχουμε σχεδιάσει τα ακόλουθα παραδείγματα κώδικα για την παραγωγή μεταθέσεων για τρεις συμβολοσειρές: MUO, AB και XYZ. Εάν θέλετε να χρησιμοποιήσετε κάποιον από αυτόν τον κώδικα, αντιγράψτε τον και αλλάξτε αυτές τις συμβολοσειρές για να ταιριάζει στο έργο σας.

Σχετίζεται με: Πώς να μετατρέψετε χαρακτήρες μιας συμβολοσειράς σε αντίθετη περίπτωση με τον προγραμματισμό

Πρόγραμμα C ++ για εκτύπωση όλων των μεταθέσεων μιας συμβολοσειράς

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

// Πρόγραμμα C ++ για εκτύπωση όλων
// μεταθέσεις μιας συμβολοσειράς
#περιλαμβάνω
χρησιμοποιώντας το όνομα χώρου std.
// Λειτουργία για εκτύπωση μεταθέσεων συμβολοσειράς
void findPermutations (string str, int leftIndex, int rightIndex)
{
εάν (leftIndex == rightIndex)
{
cout << str << endl;
}
αλλού
{
για (int i = leftIndex; i <= rightIndex; i ++)
{
ανταλλαγή (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
ανταλλαγή (str [leftIndex], str [i]);
}
}
}
// Κωδικός οδηγού
int main ()
{
string str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Μεταθέσεις του" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
string str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Μεταθέσεις του" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Μεταθέσεις του" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
επιστροφή 0?
}

Παραγωγή:

str1: MUO
Μεταθέσεις MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Μεταθέσεις ΑΒ:
ΑΒ
ΒΑ
str3: XYZ
Μεταθέσεις του XYZ:
XYZ
XZY
ΥΧΖ
ΥΖΧ
ZYX
ZXY

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

Πρόγραμμα Python για εκτύπωση όλων των μεταθέσεων μιας συμβολοσειράς

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

# Πρόγραμμα Python για εκτύπωση όλων
# μεταθέσεις μιας συμβολοσειράς
def convertToString (Λίστα):
επιστροφή ».. συμμετοχή (Λίστα)
# Λειτουργία για εκτύπωση μεταθέσεων συμβολοσειράς
def findPermutations (s, leftIndex, rightIndex):
αν leftIndex == rightIndex:
εκτύπωση (convertToString (s))
αλλού:
για i στην περιοχή (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# οπισθοδρόμηση
s [leftIndex], s [i] = s [i], s [leftIndex]
# Κωδικός οδηγού
str1 = "MUO"
size1 = len (str1)
s1 = λίστα (str1)
εκτύπωση ("str1:", str1)
εκτύπωση ("Μεταθέσεις του", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
size2 = len (str2)
s2 = λίστα (str2)
εκτύπωση ("str2:", str2)
εκτύπωση ("Μεταθέσεις του", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = λίστα (str3)
εκτύπωση ("str3:", str3)
εκτύπωση ("Μεταθέσεις του", str3, ":")
findPermutations (s3, 0, size3-1)

Παραγωγή:

str1: MUO
Μεταθέσεις MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Μεταθέσεις ΑΒ:
ΑΒ
ΒΑ
str3: XYZ
Μεταθέσεις του XYZ:
XYZ
XZY
ΥΧΖ
ΥΖΧ
ZYX
ZXY

Σχετίζεται με: Πώς να ελέγξετε αν δύο χορδές είναι αναγράμματα το ένα του άλλου

Πρόγραμμα JavaScript για εκτύπωση όλων των μεταθέσεων μιας συμβολοσειράς

Δείτε πώς εκτυπώνετε μεταθέσεις σε JavaScript:

// Πρόγραμμα JavaScript για εκτύπωση όλων
// μεταθέσεις μιας συμβολοσειράς
// Λειτουργία για εναλλαγή χαρακτήρων της συμβολοσειράς
εναλλαγή λειτουργιών (str, leftIndex, i) {
ας temp?
ας tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
επιστροφή (tempArray). συμμετοχή ("");
}
// Λειτουργία για εκτύπωση μεταθέσεων συμβολοσειράς
συνάρτηση findPermutations (str, leftIndex, rightIndex) {
εάν (leftIndex == rightIndex) {
document.write (str + "
");
} αλλο {
για (ας i = leftIndex; i <= rightIndex; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Κωδικός οδηγού
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Μεταθέσεις του" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Μεταθέσεις του" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Μεταθέσεις του" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Παραγωγή:

str1: MUO
Μεταθέσεις MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Μεταθέσεις ΑΒ:
ΑΒ
ΒΑ
str3: XYZ
Μεταθέσεις του XYZ:
XYZ
XZY
ΥΧΖ
ΥΖΧ
ZYX
ZXY

Σχετίζεται με: Πώς να ολοκληρώσετε την πρόκληση FizzBuzz σε 5 γλώσσες προγραμματισμού

C Πρόγραμμα εκτύπωσης όλων των μεταθέσεων μιας συμβολοσειράς

Παρακάτω είναι ένα πρόγραμμα C που εκτυπώνει όλες τις μεταθέσεις μιας συμβολοσειράς:

// Πρόγραμμα C για εκτύπωση όλων
// μεταθέσεις μιας συμβολοσειράς
#περιλαμβάνω
#περιλαμβάνω
// Λειτουργία για εναλλαγή χαρακτήρων της συμβολοσειράς
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temp;
}
// Λειτουργία για εκτύπωση μεταθέσεων συμβολοσειράς
void findPermutations (char str [], int leftIndex, int rightIndex)
{
εάν (leftIndex == rightIndex)
{
printf ("%s \ ⁠n", str);
}
αλλού
{
για (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Κωδικός οδηγού
int main ()
{
char str1 [] = "MUO";
int size1 = strlen (str1);
printf ("str1: %s \ ⁠n", str1);
printf ("Μεταθέσεις του %s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int size2 = strlen (str2);
printf ("str2: %s \ ⁠n", str2);
printf ("Μεταθέσεις του %s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3: %s \ ⁠n", str3);
printf ("Μεταθέσεις του %s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
επιστροφή 0?
}

Παραγωγή:

str1: MUO
Μεταθέσεις MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Μεταθέσεις ΑΒ:
ΑΒ
ΒΑ
str3: XYZ
Μεταθέσεις του XYZ:
XYZ
XZY
ΥΧΖ
ΥΖΧ
ZYX
ZXY

Η εκτύπωση μεταθέσεων είναι εύκολη

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

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Οι 11 καλύτεροι ιστότοποι για δωρεάν διαδικτυακά μαθήματα προγραμματισμού υπολογιστών

Χρησιμοποιώντας αυτά τα δωρεάν διαδικτυακά μαθήματα προγραμματισμού υπολογιστών, μπορείτε να γίνετε σπουδαίος κωδικοποιητής χωρίς πτυχίο επιστήμης υπολογιστών.

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

Σχετικά θέματα
  • Προγραμματισμός
  • Προγραμματισμός
  • Γ Προγραμματισμός
  • JavaScript
  • Πύθων
Σχετικά με τον Συγγραφέα
Γιουβράι Τσάντρα (Δημοσιεύθηκαν 58 άρθρα)

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

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

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

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

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