


Ordnen Sie die Zeichen in einer Zeichenfolge neu an, sodass zwei beliebige benachbarte Zeichen unterschiedlich sind. Dies ist in C++ implementiert
Wir erhalten eine Zeichenfolge. Vorausgesetzt, es handelt sich um str, kann die Länge einen beliebigen Wert haben. Die Aufgabe besteht darin, die gegebene Zeichenfolge so umzuordnen, dass in der resultierenden Zeichenfolge keine identischen benachbarten Zeichen aneinandergereiht sind.
Lassen Sie uns verschiedene Eingabe- und Ausgabeszenarien betrachten:
Eingabe − String str = "itinn"
Ausgabe − Ordnen Sie die Zeichen in der Zeichenfolge neu an, sodass zwei benachbarte Zeichen nicht gleich sind. Das Ergebnis für: initn.
Erläuterung − Wir erhalten eine Variable vom Typ String, vorausgesetzt, es ist str. Jetzt werden wir die Zeichen der Eingabezeichenfolge neu anordnen, sodass keine zwei identischen Zeichen an derselben Position erscheinen, d. h. „nn“ an eine nicht benachbarte Position verschieben. Das Endergebnis ist also Die Zeichenfolge wird „initn“ sein.
Eingabe − String str = "abbaabbaa"
Ausgabe − Die Zeichen in der Zeichenfolge werden neu angeordnet, sodass benachbarte Zeichen unterschiedlich sind: ababababa
Erklärung − Wir erhalten eine Variable vom Typ String, vorausgesetzt, es ist str. Jetzt ordnen wir die Zeichen der Eingabezeichenfolge neu an, sodass keine zwei gleichen Zeichen an derselben Position erscheinen, d. h. wir verschieben „bb“, „aa“, „bb“, „aa“, da sie gleich und benachbart sind. Die letzte Zeichenfolge wird also „ababababa“ sein.
Die im folgenden Programm verwendete Methode lautet wie folgt:
Geben Sie eine Variable vom Typ String ein (angenommen, es handelt sich um str), berechnen Sie die Größe des Strings und speichern Sie ihn in einer Variablen mit dem Namen „length“.
Überprüfen Sie, ob die Länge 0 ist, und kehren Sie dann zurück.
Übergeben Sie die Daten an die Funktion Rearrangement(str, length).
-
Innerhalb der Funktion Rearrangement(arr, length)
setzt die Größe der Zeichenfolge auf (Länge + 1)/2.
Deklarieren Sie eine Variable vom Vektortyp vec(26, 0), die Daten vom Typ Integer speichert, und einen Zeiger vom Typ String ptr(length, ‘ ‘). Deklarieren Sie außerdem eine temporäre Variable temp vom Typ Integer und dem Wert 0.
Beginnen Sie mit der FOR-Schleife, um str zu iterieren. Setzen Sie innerhalb der Schleife vec[it - ‚a‘]++.
Erstellen Sie eine Zeichentypvariable ch und setzen Sie sie auf das Ergebnis des Aufrufs der Maximum(vec)-Funktion.
Deklarieren Sie eine Variable total vom Typ Integer und setzen Sie sie auf vec[ch - ‚a‘].
Überprüfen Sie, ob die Gesamtsumme größer als die Größe ist, und kehren Sie dann zurück.
Beginnen Sie mit der Schleife von WHILE total, setzen Sie dann ptr[temp] auf ch, setzen Sie temp auf temp + 2 und dekrementieren Sie total um 1.
Setze vec[ch - 'a'] auf 0. Beginnen Sie mit der FOR-Schleife von i bis 0, bis i kleiner als 26 ist. Starten Sie innerhalb der Schleife die while-Schleife. Wenn vec[i] größer als 0 ist, setzen Sie temp auf (temp >= length) 1: temp, setzen Sie ptr[temp] auf 'a' + i, setzen Sie temp auf temp + 2 und dekrementiere vec[i] um 1.
Return ptr
-
Innerhalb der Funktion char Maximum(const vector
& vec) deklarieren Sie eine Variable vom Typ Integer hoch und setzen Sie sie auf 0 und eine Variable vom Typ Zeichen c.
Beginnen Sie mit der FOR-Schleife von i nach 0, bis i kleiner als 26 ist. Überprüfen Sie innerhalb der Schleife, ob vec[i] kleiner als hoch ist, und setzen Sie dann hoch auf vec[i] und c auf „a“ + i.
Zurück zu c
Ergebnisse drucken.
Beispiel
#include <bits/stdc++.h> using namespace std; char maximum(const vector<int>& vec){ int high = 0; char c; for(int i = 0; i < 26; i++){ if(vec[i] > high){ high = vec[i]; c = 'a' + i; } } return c; } string Rearrangement(string str, int length){ int size = (length + 1) / 2; vector<int> vec(26, 0); string ptr(length, ' '); int temp = 0; for(auto it : str){ vec[it - 'a']++; } char ch = maximum(vec); int total = vec[ch - 'a']; if(total > size){ return ""; } while(total){ ptr[temp] = ch; temp = temp + 2; total--; } vec[ch - 'a'] = 0; for(int i = 0; i < 26; i++){ while (vec[i] > 0){ temp = (temp >= length) ? 1 : temp; ptr[temp] = 'a' + i; temp = temp + 2; vec[i]--; } } return ptr; } int main(){ string str = "itinn"; int length = str.length(); if(length == 0){ cout<<"Please enter a valid string"; } string count = Rearrangement(str, length); if(count == ""){ cout<<"Please enter a valid string"; } else{ cout<<"Rearrangement of characters in a string such that no two adjacent are same is: "<<count; } return 0; }
Ausgabe
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert
Rearrangement of characters in a string such that no two adjacent are same is: initn
Das obige ist der detaillierte Inhalt vonOrdnen Sie die Zeichen in einer Zeichenfolge neu an, sodass zwei beliebige benachbarte Zeichen unterschiedlich sind. Dies ist in C++ implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In diesem Artikel besprechen wir, wie man eine bestimmte Zeichenfolge in C++ ändert, indem man die Vokale alphabetisch an ihren jeweiligen Indizes neu anordnet. Außerdem erläutern wir die Methoden zur Lösung dieses Problems und stellen Beispiele mit Testfällen bereit. Problemstellung Ordnen Sie bei gegebener Zeichenfolge die Vokale an ihren jeweiligen Indizes in alphabetischer Reihenfolge neu an. Die Konsonanten in der Zeichenfolge sollten ihre ursprüngliche Reihenfolge beibehalten. Bei gegebener Zeichenfolge „tutorialspoint“ sollte die Ausgabe beispielsweise „tatiriolspount“ lauten. Methode Dieses Problem kann mit einem einfachen Algorithmus gelöst werden. Wir können zunächst eine separate Zeichenfolge erstellen, die alle Vokale in der angegebenen Zeichenfolge in ihrer jeweiligen Reihenfolge enthält. Wir können diese Zeichenfolge dann alphabetisch sortieren. endlich,

Wir haben zwei Zeichenfolgen erhalten und müssen prüfen, ob eine Permutation der angegebenen Zeichenfolgen existiert, sodass eine Permutation am i-ten Index größere Zeichen als die andere Permutation haben kann. Wir können das Problem lösen, indem wir die Zeichenfolge sortieren und jedes Zeichen in der Zeichenfolge einzeln vergleichen. Alternativ können wir die Zeichenhäufigkeiten der beiden Zeichenfolgen verwenden, um das Problem zu lösen. Problemstellung: Wir erhalten die Zeichenfolgen str1 und str2 der Länge N. Wir müssen prüfen, ob es Permutationen von Zeichenfolgen gibt, sodass eine lexikographisch größer ist als die andere. Dies bedeutet, dass jede Permutation ein Zeichen am i-ten Index haben sollte, das größer ist als das Zeichen am i-ten Index einer anderen Zeichenfolgenpermutation. Beispieleingabe -str1="

Die Manipulation von Zeichenfolgen ist in einer Vielzahl von Problemlösungsszenarien von entscheidender Bedeutung. Es wurde festgestellt, dass durch die Permutation einer gegebenen Zeichenfolge die Anzahl der Zeichen größer ist als die Anzahl der angrenzenden Zeichen. Dies ist ein interessantes Rätsel, bei dem die Zeichen einer Zeichenfolge neu angeordnet werden müssen, um so viele Paare benachbarter Zeichen wie möglich zu erzeugen Die Zeichen links sind kleiner als die Zeichen rechts. Methoden Es gibt mehrere Möglichkeiten, Permutationen von Zeichenfolgen zu lösen, bei denen die maximale Anzahl von Zeichen größer ist als die Anzahl der direkt angrenzenden Zeichen. Methode 1 – Backtracking und Pruning – Methode 2 – Dynamische Programmierung – Methode 3 – Heap-Algorithmus – Methode 4 – Wörterbuchreihenfolge mit Pruning – Methode 1: Backtracking und Pruning Verwenden Sie den Backtracking-Algorithmus, um alle Permutationen der Zeichenfolge zu generieren. Überprüfen Sie bei jedem Schritt, ob die aktuelle Anordnung mehr Zeichen als ihre Nachbarn aufweist, die über dem bisher gefundenen Maximum liegen. Wenn nicht, beschneiden Sie sie frühzeitig

Wir erhalten eine Zeichenfolge, sagen wir str, die Länge kann ein beliebiger Wert sein. Die Aufgabe besteht darin, die gegebene Zeichenfolge so umzuordnen, dass in der resultierenden Zeichenfolge keine identischen benachbarten Zeichen aneinandergereiht sind. Schauen wir uns verschiedene Eingabe- und Ausgabeszenarien an: Eingabe - Zeichenfolge str="itinn" Ausgabe - Ordnen Sie die Zeichen in der Zeichenfolge neu an, sodass zwei benachbarte Zeichen unterschiedlich sind. Das Ergebnis ist: initn. Erläuterung: Wir erhalten eine Variable vom Typ String, vorausgesetzt, es ist str. Jetzt werden wir die Zeichen der Eingabezeichenfolge so neu anordnen

In dieser Frage führen wir die angegebene Abfrage für die Array-Elemente aus. Die Abfrage enthält eine Schleife aus Linksdrehung, Rechtsdrehung und Aktualisierung von Array-Elementen. Der logische Teil zur Lösung des Problems ist die Array-Rotation. Eine einfache Möglichkeit, ein Array nach links zu drehen, besteht darin, jedes Element durch das nächste Element und das letzte Element durch das erste Element zu ersetzen. Wir können die Deque-Datenstruktur verwenden, um das Array effizient zu drehen. Problemstellung: Wir erhalten ein arr[]-Array mit ganzzahligen Werten. Zusätzlich erhalten wir ein request[]-Array mit K Abfragen. Wir müssen jede in „requests[]“ angegebene Abfrage für die Elemente des arr[]-Arrays gemäß den folgenden Regeln ausführen. {0} – Führt eine kreisförmige Linksdrehung an einem Array durch. {1) – Kreisen Sie das Array ein

Wir erhalten einen String „str“ beliebiger Länge. Die Aufgabe besteht darin, die Zeichen so neu anzuordnen, dass die Ausgabe zu einer Palindrom-Zeichenfolge wird, ohne dass Zeichen zur gegebenen Eingabezeichenfolge hinzugefügt oder daraus entfernt werden. Von einer Palindrom-Zeichenfolge spricht man, wenn die Zeichen so angeordnet sind, dass sie von Anfang bis Ende gleich klingen. Schauen wir uns hierfür verschiedene Eingabe- und Ausgabeszenarien an: Eingabe: Zeichenfolge str="itnin". Ausgabe: Neuanordnung von Zeichen, um nach Möglichkeit eine Palindromzeichenfolge zu bilden: nitin Erläuterung: Wir erhalten eine Variable vom Typ string, die als str angenommen wird. Jetzt werden wir die Zeichen der Eingabezeichenfolge neu anordnen, sodass sie wie folgt aussieht

Wir haben ein Array vom Typ positive Ganzzahl, vorausgesetzt, es ist arr[], mit beliebiger Größe. Die Aufgabe besteht darin, das Array so umzuordnen, dass, wenn wir ein Element mit seinen angrenzenden Elementen multiplizieren und dann alle resultierenden Elemente addieren, die kleinste Summe zurückgegeben wird. Schauen wir uns verschiedene Eingabe- und Ausgabesituationen an: Eingabe -intarr[]={2,5,1,7,5,0,1,0} Ausgabe - Ordnen Sie das Array neu an, um die Summe zu minimieren, die das Produkt eines aufeinanderfolgenden Paares ist der Elemente Erklärung für: 70505121 – Wir haben ein Array von Ganzzahlen der Größe 8. Jetzt werden wir das Array neu anordnen, nämlich 70505121. Wir prüfen, ob die Mindestsumme zurückgegeben wird, die 7*0+5*0+5 beträgt

Wie ordne ich die Programme im Startmenü des Win10-Systems neu an? Viele Freunde wissen vielleicht nicht viel darüber. Wenn Sie nicht wissen, wie man die Programme neu anordnet, hat der Editor unten die Einstellungsmethoden für das Neuanordnen der Programme im Startmenü des Win10-Systems zusammengestellt. Folgen Sie dem Herausgeber und werfen Sie einen Blick nach unten! ! So ordnen Sie die Programme im Startmenü im Win10-System neu an: 1. Aktualisieren Sie das System auf die Version win1010156, um diese Funktion zu verwenden. 2. Klicken Sie auf das Startmenüsymbol und dann auf [Alle Apps]. 3. Geben Sie alle Programme im Startmenü ein , und klicken Sie dann oben auf das Symbol [&], damit Sie die Stelle eingeben können, an der Sie die Sortierreihenfolge festlegen möchten. 4. Wählen Sie den Anfangsbuchstaben oder aus
