Heim > Backend-Entwicklung > C++ > Berechnen Sie drei nicht überlappende Teilzeichenfolgen und verketten Sie sie zu einem Palindrom

Berechnen Sie drei nicht überlappende Teilzeichenfolgen und verketten Sie sie zu einem Palindrom

王林
Freigeben: 2023-09-07 18:25:02
nach vorne
1266 Leute haben es durchsucht

Berechnen Sie drei nicht überlappende Teilzeichenfolgen und verketten Sie sie zu einem Palindrom

Einführung

In diesem Tutorial erläutern wir eine Methode, um drei nicht überlappende Teilzeichenfolgen aus einem bestimmten String s zu finden. Wenn alle Teilzeichenfolgen miteinander kombiniert werden, bilden sie ein Palindrom. Zur Lösung dieser Aufgabe nutzen wir die String-Klassen-Funktionalität der Programmiersprache C++.

Ein Palindrom in einer Zeichenfolge bedeutet, dass die Zeichenfolge in Vorwärts- und Rückwärtsrichtung gleich lautet. Ein Beispiel für eine Palindrom-Zeichenfolge ist Madam.

Angenommen, es gibt eine Zeichenfolge „s“ und die Teilzeichenfolgen sind a, b, c. Wenn Sie a, b und c kombinieren, bilden sie eine Palindrom-Zeichenfolge. Dies ist ein Beispiel für das Verständnis der Logik des Problems.

Satzerklärung

String s = “abbacab”      
Acceptable substrings of length 3 are: “abb”, “bac”, and “bba”.
Nach dem Login kopieren

Wenn wir alle drei Teilzeichenfolgen verketten, ist die resultierende Zeichenfolge eine Palindromzeichenfolge, die abbbacbba lautet.

Grammatik

Die Funktion

size() gehört zur String-Klasse und wird verwendet, um die Größe des Eingabestrings und seine Zeichenlänge zu ermitteln.

string_name,size();  
Nach dem Login kopieren

Algorithmus

  • Eingabezeichenfolge abrufen.

  • Initialisieren Sie eine Zählervariable, die zum Verfolgen der Anzahl palindromischer Teilzeichenfolgen verwendet wird.

  • Verwenden Sie 3 verschachtelte for-Schleifen, um 3 mögliche Teilzeichenfolgen definierter Länge zu generieren.

  • Die erste innere Schleife wird von 0 auf die Stringlänge - 3 initialisiert.

  • Die zweite innere Schleife wird auf die Zeichenfolgenlänge initialisiert – 2 von der ersten inneren Schleife + 1.

  • Die äußere Schleife wird von der zweiten Schleife + 1 bis zur Zeichenfolgenlänge - 1 initialisiert.

  • Nachdem Sie alle Teilzeichenfolgen gefunden haben, verketten Sie sie.

  • Überprüfen Sie, ob das Teilstring-Palindrom vorhanden ist, und erhöhen Sie in diesem Fall den Wert der Zählervariable.

  • Zählervariablenwert drucken.

Beispiel

Um den obigen Algorithmus mit C++ zu implementieren, nehmen wir eine Eingabezeichenfolge und generieren alle möglichen Kombinationen von Teilzeichenfolgen und berücksichtigen nur diese palindromischen Teilzeichenfolgen. Wenn ein solcher Teilstring möglich ist, wird die Zählervariable erhöht. Drucken Sie das Ergebnis der Zählervariablen aus.

#include <bits/stdc++.h>
using namespace std;
 
// user defined function to check formed substrings are palindrome or not
bool isStringPalin(int a, int b, int c, int d, int x, int y, string st){
   int begin = a, stop = y;
   while (begin < stop) {
      if (st[begin] != st[stop])
         return false;
 
      begin++;
      if (begin == b + 1)
         begin = c;
      stop--;
      if (stop == x - 1)
         stop = d;
   }
   return true;
}
 
// User defined function to count the number of useful substrings
int countSubString(string st){
   //Counting variable to count and return the number of substrings
   int ct = 0;
   int l = st.size();
 
   //It is to select the first substring
   for (int a = 0; a < l - 2; a++) {
      for (int b = a; b < l - 2; b++){
 
         // This loop selects the second useful substring
         for (int c = b + 1; c < l - 1; c++) {
            for (int d = c; d < l - 1; d++) {
 
               // this for loop will select the third substring
               for (int x = d + 1; x < l; x++) {
                  for (int y = x; y < l; y++) {
 
                     // If condition to check the selected substrings are forming palindrome or not
                     if (isStringPalin(a, b, c, d, x, y, st)) {
                        ct++;
                     }
                  }
               }
            }
         }
      }
   }
   // returning the count variable that stores the number of useful substrings
   return ct;
}
 
// Controlling code
int main(){
   string st = "abcab";
   cout << "The possible number of substrings are: "<< countSubString(st);
 
   return 0;
}
Nach dem Login kopieren

Ausgabe

The possible number of substrings are: 4
Nach dem Login kopieren

Fazit

Wir haben eine Methode entwickelt, um gültige Teilzeichenfolgen zu finden, die Palindrome bilden. Um diese Lösung zu implementieren, haben wir C++-Schleifen und if-Bedingungen verwendet. Um eines der Beispiele mit C++ zu implementieren, haben wir die Funktion size() und verschachtelte Schleifen verwendet. Verschachtelte Schleifen helfen dabei, Teilstrings unterschiedlicher Länge zu finden und die Funktion size() gibt die Größe des Strings zurück.

Das obige ist der detaillierte Inhalt vonBerechnen Sie drei nicht überlappende Teilzeichenfolgen und verketten Sie sie zu einem Palindrom. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage