Heim  >  Artikel  >  Backend-Entwicklung  >  Konvertieren Sie eine Zeichenfolge in eine Form, die abcd..z als Teilsequenz enthält

Konvertieren Sie eine Zeichenfolge in eine Form, die abcd..z als Teilsequenz enthält

WBOY
WBOYnach vorne
2023-09-01 14:17:061126Durchsuche

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

    • Die 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.

Rekursiver Algorithmus generiert nachfolgende Zeichenfolgen

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.

Syntax für nachfolgende Arrays

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.

So folgen Sie

  • 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++

String mit C++ konvertieren

In diesem C++-Code erstellen wir eine neue Zeichenfolge und entfernen alle Vokale aus der Eingabezeichenfolge. Anstelle dieser Vokale wird # hinzugefügt.

Beispiel 1

#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;
}

Ausgabe

#r#D#R#d#V#d#S!!
-1

Verwenden Sie C++, um unäre Operationen an Zeichenfolgen auszuführen

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

Beispiel 2

lautet:

Beispiel 2

#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;
}

Ausgabe

Input array present here: 7 16 10 97 2001
The output array now contains with: 8 17 11 98 2002

Verwenden Sie C++, um binäre Operationen an Zeichenfolgen auszuführen

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

Beispiel 3

lautet:

Beispiel 3

#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;
}

Ausgabe

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

Drucken Sie alle nachfolgenden Zeichenfolgen mit C++ aus

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).

Beispiel 4

#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;
}

Ausgabe

rudraabonikoaa
rudraabonikoa
rudraabonikoa
rudraaboniko
rudraabonikaa
rudraabonika
rudraabonika
rudraabonik
rudraabonioaa
rudraabonioa
rudraabonioa
rudraabonio
rudraaboniaa
rudraabonia
rudraabonia

Konvertieren Sie eine Zeichenfolge, um abcd…z als Teilsequenz zu haben

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是特定字符串的长度。

Example 5

的中文翻译为:

示例5

#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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen