Inhaltsverzeichnis
Lassen Sie uns verschiedene Eingabe- und Ausgabeszenarien betrachten:
Die im folgenden Programm verwendete Methode lautet wie folgt:
Beispiel
Ausgabe
Heim Backend-Entwicklung C++ Ordnen Sie die Zeichen in einer Zeichenfolge neu an, sodass zwei beliebige benachbarte Zeichen unterschiedlich sind. Dies ist in C++ implementiert

Ordnen Sie die Zeichen in einer Zeichenfolge neu an, sodass zwei beliebige benachbarte Zeichen unterschiedlich sind. Dies ist in C++ implementiert

Aug 26, 2023 pm 10:37 PM
重新排列 字符串排列 相邻字符不相同

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 = &#39;a&#39; + i;
      }
   }
   return c;
}
string Rearrangement(string str, int length){
   int size = (length + 1) / 2;
   vector<int> vec(26, 0);
   string ptr(length, &#39; &#39;);
   int temp = 0;
   for(auto it : str){
      vec[it - &#39;a&#39;]++;
   }
   char ch = maximum(vec);
   int total = vec[ch - &#39;a&#39;];
   if(total > size){
      return "";
   }
   while(total){
      ptr[temp] = ch;
      temp = temp + 2;
      total--;
   }
   vec[ch - &#39;a&#39;] = 0;
   for(int i = 0; i < 26; i++){
      while (vec[i] > 0){
         temp = (temp >= length) ? 1 : temp;
         ptr[temp] = &#39;a&#39; + 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;
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ändern Sie eine Zeichenfolge, indem Sie Vokale entsprechend ihrer Indexposition in der Zeichenfolge neu anordnen Ändern Sie eine Zeichenfolge, indem Sie Vokale entsprechend ihrer Indexposition in der Zeichenfolge neu anordnen Sep 06, 2023 pm 06:53 PM

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,

Überprüft, ob eine Permutation einer bestimmten Zeichenfolge lexikographisch größer ist als eine andere angegebene Zeichenfolge Überprüft, ob eine Permutation einer bestimmten Zeichenfolge lexikographisch größer ist als eine andere angegebene Zeichenfolge Sep 22, 2023 am 08:41 AM

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=&quot

Ordnen Sie Zeichenfolgen so an, dass die Anzahl der darin enthaltenen Zeichen größer ist als die Anzahl der angrenzenden Zeichen. Ordnen Sie Zeichenfolgen so an, dass die Anzahl der darin enthaltenen Zeichen größer ist als die Anzahl der angrenzenden Zeichen. Sep 24, 2023 am 11:09 AM

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

Ordnen Sie die Zeichen in einer Zeichenfolge neu an, sodass zwei beliebige benachbarte Zeichen unterschiedlich sind. Dies ist in C++ implementiert Ordnen Sie die Zeichen in einer Zeichenfolge neu an, sodass zwei beliebige benachbarte Zeichen unterschiedlich sind. Dies ist in C++ implementiert Aug 26, 2023 pm 10:37 PM

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

Ordnen Sie Array-Elemente entsprechend einer bestimmten Abfrage neu an und aktualisieren Sie sie Ordnen Sie Array-Elemente entsprechend einer bestimmten Abfrage neu an und aktualisieren Sie sie Sep 14, 2023 pm 04:29 PM

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

Ordnen Sie Zeichen in C++ neu an, um ein Palindrom zu bilden (falls möglich). Ordnen Sie Zeichen in C++ neu an, um ein Palindrom zu bilden (falls möglich). Sep 09, 2023 pm 03:57 PM

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

Ordnen Sie ein Array so um, dass die Summe der Produkte aufeinanderfolgender Elementpaare minimal ist, geschrieben in C++ Ordnen Sie ein Array so um, dass die Summe der Produkte aufeinanderfolgender Elementpaare minimal ist, geschrieben in C++ Aug 26, 2023 am 10:57 AM

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

So ordnen Sie Programme im Startmenü im Win10-System neu an So ordnen Sie Programme im Startmenü im Win10-System neu an Jul 18, 2023 am 10:17 AM

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

See all articles