Heim > Artikel > Backend-Entwicklung > Konvertieren Sie eine Zeichenfolge in eine Form, die abcd..z als Teilsequenz enthält
Die String-Konvertierung (auch als String-Konvertierung bezeichnet) ist eine Operation in C++, die das Ergebnis im Ausgabearray speichert, nachdem der gesamte Prozess ausgeführt wurde. In C++ gibt es eine Funktion namens „transform()“, die im Verzeichnis der C++-Umgebung vorhanden ist und mit der wir eine Zeichenfolge in eine neue Zeichenfolge konvertieren können.
Es gibt zwei Formen von Konvertierungsfunktionen −
Unäre Operation
wird auf jedes Element des Eingabearrays angewendet.
Nachdem der Vorgang abgeschlossen ist, werden die Ergebnisse in einem Ausgabearray gespeichert.
Binäre Operationen
Operationen gelten für jedes Element eines bestimmten Arrays.
Das erste Eingabeelement und das zweite entsprechende Eingabeelement nehmen an der Operation teil.
Die Ausgabedaten werden in einem Ausgabearray gespeichert.
Subsequence-Strings sind brandneue Strings, die durch die Ausführung verschiedener Vorgänge am Eingabestring (z. B. Löschen) generiert werden. Bei Teilsequenzzeichenfolgen wird der Vorgang ausgeführt, ohne dass sich dies auf die übrigen Zeichen auswirkt.
Für die String-Konvertierung enthält die Eingabe einen Operationsstring der Länge n+1. Die Originalcharaktere gehören zur Serie a bis z. Die Länge der Druckzeichenfolge wird hier als n behandelt, was eine Ausgabezeichenfolge ist.
In diesem Artikel erfahren wir, wie man in einer C++-Umgebung einen String so umwandelt, dass er abcd….z als Teilsequenz hat.
Durch die Verwendung eines rekursiven Ansatzes finden Sie unten einen möglichen Algorithmus für eine nachfolgende Zeichenfolge. Dies ist eine bestimmte Zeichenfolge und T ist die Zeit, die zum Abschließen des Vorgangs benötigt wird.
Schritt 1 – Zählen Sie die Anzahl der Vorkommen.
Schritt 2 – Wenn i = Länge(n) und j = Länge(T).
Schritt 3− Dann kehren Sie zu 1 zurück.
Schritt 4 – Das Ende.
Schritt 5 – Wenn i = Länge(S).
Schritt 6 – Dann 0 zurückgeben.
Schritt 7 – Das Ende.
Schritt 8 – Zählen
Schritt 9 – Wenn, j
Schritt 10 – Count
Schritt 11 – Das Ende.
Schritt 12 – Count
Schritt 13 – Rückgabezählung.
Schritt 14 – Das Ende.
Here, we have two given sequences. X and Y. Initialize a table with a dimension of X.length * Y.length X.label1 = X Y.label2 = Y CS1[0][] = 0 CS2[][0] = 0 Start from CS[1][1] Compare X[i] and Y[j] If X[i] = Y[j] CS[i][j] = 1 + CS[i-1, j-1] Point an arrow to CS[i][j] Else CS[i][j] = max(CS[i-1][j], CS[i][j-1]) Point an arrow to max(CS[i-1][j], CS[i][j-1])
Hier erstellen wir eine grundlegende Arbeitssyntax für nachfolgende Arrays. Wenn es zwei Sequenzen gibt, müssen wir die folgenden Schritte ausführen, um die Ausgabe zu erhalten.
Methode 1: Zeichenfolge mit C++ konvertieren
Methode 2 zur Durchführung unärer Operationen an Strings mit C++
Methode 3 zur Verwendung von C++ zum Ausführen binärer Operationen an Zeichenfolgen
Drucken Sie alle möglichen Folgezeichenfolgen mit C++ aus
Methode 5 zum Konvertieren einer Zeichenfolge mit abcd….z als Teilsequenz mit C++
In diesem C++-Code erstellen wir eine neue Zeichenfolge und entfernen alle Vokale aus der Eingabezeichenfolge. Anstelle dieser Vokale wird # hinzugefügt.
#include <bits/stdc++.h> using namespace std; string change_case(string r) { int l = r.length(); for(int i = 0 ; i < l ; i++) { if(r[i] >= 'a' && r[i] <= 'z') r[i] = r[i] - 32; else if(r[i] >= 'A' && r[i] <= 'Z') r[i] = r[i] + 32; } return r; } string delete_vowels(string a) { string temp = ""; int l = a.length(); for(int i = 0 ; i < l ; i++) { if(a[i] != 'a' && a[i] != 'e' && a[i] != 'i' && a[i] != 'o' && a[i] != 'u' && a[i] != 'A' && a[i] != 'E' && a[i] != 'O' && a[i] != 'U'&& a[i] != 'I') temp += a[i]; } return temp; } string insert_hash(string a) { string temp = ""; int l = a.length(); for(int i = 0 ; i < l ; i++) { if((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) temp = temp + '#' + a[i]; else temp = temp + a[i]; } return temp; } void transformSting(string a) { string b = delete_vowels(a); string c = change_case(b); string d = insert_hash(c); if(d=="") cout<<"-1"<<endl; else cout << d<<endl; } int main() { string a = "RudraDevDas!!"; string b = "aeiou"; transformSting(a); transformSting(b); return 0; }
#r#D#R#d#V#d#S!! -1
In diesem speziellen Code zeigen wir, wie man unäre Operationen am Eingabearray durchführt. Diese Funktion akzeptiert einen Zeiger auf die Start- und Endposition einer einzelnen Eingabe. Und am Anfang des Ausgabearrays operieren.
Die chinesische Übersetzung von#include <iostream> #include <algorithm> using namespace std; int op_increment (int x) { x = x + 1; return x; } int main () { int n = 5; int input_array[] = {7, 16, 10, 97, 2001}; int output_array[n]; std::cout << "Input array present here:"; for(int i=0; i<5; i++){ cout << ' ' << input_array[i]; } cout << '\n'; transform (input_array, input_array+5, output_array, op_increment); std::cout << "The output array now contains with:"; for(int i=0; i<5; i++){ cout << ' ' << output_array[i]; } cout << '\n'; return 0; }
Input array present here: 7 16 10 97 2001 The output array now contains with: 8 17 11 98 2002
In diesem speziellen Code zeigen wir, wie man binäre Operationen am Eingabearray durchführt. Die Funktion transform() fügt einen Zeiger zwischen dem Startpunkt und dem ersten Eingabearray hinzu. Denken Sie daran, dass binäre Operationen immer mit zwei Eingabedatensätzen arbeiten.
Die chinesische Übersetzung von#include <iostream> #include <algorithm> #include <vector> using namespace std; int op_add (int i, int j) { return i+j; } int main () { int n = 5; int arr1[] = {7, 16, 10, 2001, 1997}; int arr2[] = {1, 2, 3, 4, 5}; int output[n]; std::cout << "Input data in array1:"; for(int i=0; i<n; i++){ cout << ' ' << arr1[i]; } cout << '\n'; std::cout << "Input data in array2:"; for(int i=0; i<n; i++){ cout << ' ' << arr2[i]; } cout << '\n'; std::transform (arr1, arr1+n, arr2, output, op_add); std::cout << "Output array is here now:"; for(int i=0; i<5; i++){ cout << ' ' << output[i]; } cout << '\n'; return 0; }
Input data in array1: 7 16 10 2001 1997 Input data in array2: 1 2 3 4 5 Output array is here now: 8 18 13 2005 2002
Wenden Sie die Konzepte der Auswahl und Nichtauswahl an, um alle Teilsequenzen eines bestimmten Arrays herauszufinden. Während dieses Vorgangs können einige Zeichen entfernt werden, ohne dass sich die Reihenfolge der Elemente ändert. Hier beträgt die zeitliche Komplexität dieses Prozesses O(2^n) und die räumliche Komplexität O(n).
#include <bits/stdc++.h> using namespace std; void printSubsequence(string input, string output) { if (input.empty()) { cout << output << endl; return; } printSubsequence(input.substr(1), output + input[0]); printSubsequence(input.substr(1), output); } int main() { string output = ""; string input = "rudraabonikoaa"; printSubsequence(input, output); return 0; }
rudraabonikoaa rudraabonikoa rudraabonikoa rudraaboniko rudraabonikaa rudraabonika rudraabonika rudraabonik rudraabonioaa rudraabonioa rudraabonioa rudraabonio rudraaboniaa rudraabonia rudraabonia
Dies ist ein spezieller Prozess zum Konvertieren einer Zeichenfolge in eine Form, die abcd...z als Teilsequenz enthält.
Initialisierungszeichen.
Wenn die Länge weniger als 26 beträgt, wird „false“ zurückgegeben.
Iterieren Sie die Schleife von 0 bis s.size() - 1.
Wenn das Zeichen z erreicht, unterbrechen Sie die Schleife.
Wenn das aktuelle Zeichen kleiner als s oder gleich dem Zeichen ist.
Ersetzen Sie die Schrittweite des aktuellen Zeichens durch 1.
Gibt false zurück, wenn das Zeichen kleiner oder gleich z ist.
Andernfalls geben Sie true zurück.
在这个过程中,时间复杂度为O(n),辅助空间为O(1)。这里,n是特定字符串的长度。
#include <bits/stdc++.h> using namespace std; bool transformString(string& s) { char ch = 'a'; if (s.size() < 26) return false; for (int i = 0; i < s.size(); i++) { if (int(ch) > int('z')) break; if (s[i] <= ch) { s[i] = ch; ch = char(int(ch) + 1); } } if (ch <= 'z') return false; return true; } int main() { string str = "aaaaaaaaaaaaaaaaaaaaaaaaaaa"; if (transformString(str)) cout << str << endl; else cout << "Not Possible" << endl; return 0; }
abcdefghijklmnopqrstuvwxyza
在本文中,我们学习了使用C++环境进行字符串转换及其不同形式。通过遵循特定的算法和语法,我们检查和构建了一些不同的C++代码,并了解了如何转换字符串,使其具有abcd...z作为子序列。
Das obige ist der detaillierte Inhalt vonKonvertieren Sie eine Zeichenfolge in eine Form, die abcd..z als Teilsequenz enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!