Inhaltsverzeichnis
Beispiel
Anleitung
Methode 2
Algorithmus
Ausgabe
Fazit
Heim Backend-Entwicklung C++ Prüft, ob ein String in drei Teilstrings aufgeteilt werden kann, wobei ein Teilstring ein Teilstring der anderen beiden Teilstrings ist

Prüft, ob ein String in drei Teilstrings aufgeteilt werden kann, wobei ein Teilstring ein Teilstring der anderen beiden Teilstrings ist

Sep 22, 2023 am 11:53 AM
字符串分割 子字符串 检查

Prüft, ob ein String in drei Teilstrings aufgeteilt werden kann, wobei ein Teilstring ein Teilstring der anderen beiden Teilstrings ist

In diesem Problem müssen wir die gegebene Zeichenfolge so aufteilen, dass die dritte Teilzeichenfolge eine Teilzeichenfolge der ersten beiden Teilzeichenfolgen sein kann.

Überlegen wir uns eine Lösung. Die dritte Zeichenfolge kann nur dann eine Teilzeichenfolge der ersten beiden Zeichenfolgen sein, wenn die ersten beiden Zeichenfolgen alle Zeichen der dritten Zeichenfolge enthalten. Wir müssen also mindestens ein Zeichen mit einer Häufigkeit von mehr als 3 in der angegebenen Zeichenfolge finden und können die dritte Teilzeichenfolge dieses einzelnen Zeichens verwenden.

Problemstellung – Wir erhalten eine Zeichenfolge str mit N Kleinbuchstaben. Wir müssen prüfen, ob wir die Zeichenfolge in drei Teilzeichenfolgen a, b und c aufteilen können, sodass Teilzeichenfolge c eine Teilzeichenfolge von a und b ist. Geben Sie „Ja“ oder „Nein“ aus, je nachdem, ob 3 Teilzeichenfolgen gefunden werden können.

Beispiel

Input –  str = "tutorialsPoint"
Nach dem Login kopieren
Output – ‘Yes’
Nach dem Login kopieren
Nach dem Login kopieren

Anleitung

Hier können wir die Zeichenfolge in „tu“, „torialsPoin“ und „t“ aufteilen. Daher ist die dritte Zeichenfolge eine Teilzeichenfolge der ersten beiden Zeichenfolgen.

Input –  str = "tutorials"
Nach dem Login kopieren
Output – ‘No’
Nach dem Login kopieren

Anleitung

Wir können die Zeichenfolge basierend auf der gegebenen Bedingung nicht in drei Teilzeichenfolgen aufteilen, da die Häufigkeit eines Zeichens nicht größer als 3 ist.

Input –  str = "hhhhhhhh"
Nach dem Login kopieren
Output – ‘Yes’
Nach dem Login kopieren
Nach dem Login kopieren

Anleitung

Gemäß den gegebenen Bedingungen können die drei Teilzeichenfolgen „h“, „h“ und „hhhhhh“ sein.

Methode 1

Bei dieser Methode verwenden wir ein Array, um die Häufigkeit jedes Zeichens zu speichern. Danach prüfen wir, ob Zeichen mit einer Häufigkeit größer oder gleich 3 vorliegen.

Algorithmus

  • Schritt 1 – Definieren Sie das „freq“-Array mit einer Länge von 26.

  • Schritt 2 – Durchlaufen Sie die Zeichenfolge, um die Häufigkeit der Zeichen zu zählen. Erhöhen Sie in der for-Schleife den Wert von freq[str[i] – „a“]. Hier ergibt str[i] – „a“ einen Index zwischen 0 und 26.

  • Schritt 3 – Durchlaufen Sie nun das Array „freq“ und geben Sie „true“ zurück, wenn der Wert an einem Array-Index größer als „3“ ist.

  • Schritt 4 – Geben Sie true zurück, wenn die Schleife endet.

  • Schritt 5 – Geben Sie „Ja“ oder „Nein“ basierend auf dem Rückgabewert der Funktion isSUbStringPossible() aus.

Beispiel

#include <bits/stdc++.h>
using namespace std;
// function to Check if a string can be split into 3 substrings such that one of them is a substring of the other two
string isSubStringPossible(string str, int len){

   // array to store the frequency
   int freq[26] = {0};
   
   // Iterate over the string
   for (int i = 0; i < len; i++){
   
      // count the frequency of each character
      freq[str[i] - 'a']++;
   }
   
   // Traverse the frequency array
   for (int i = 0; i < 26; i++){
   
      // If the frequency of any character is greater than or equal to 3, then return "Yes."
      if (freq[i] >= 3){
         return "Yes";
      }
   }
   
   // Otherwise
   return "No";
}
int main(){
   string str = "tutorialsPoint";
   int len = str.length();
   cout << "The given string can be splited into 3 substrings such that one of them is a substring of the other two - " << isSubStringPossible(str, len);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The given string can be splited into 3 substrings such that one of them is a substring of the other two - Yes
Nach dem Login kopieren
Nach dem Login kopieren

Zeitkomplexität – O(N), wenn wir über die Zeichenfolge iterieren.

Raumkomplexität – O(1), da wir Arrays mit konstanter Länge verwenden.

Methode 2

Bei dieser Methode konvertieren wir zunächst die Zeichenfolge in ein Zeichenarray. Danach verwenden wir die Methode count(), um die Häufigkeit bestimmter Zeichen im Array zu zählen.

Algorithmus

  • Schritt 1 – Erstellen Sie ein Array der Größe „len + 1“, wobei „len“ die Stringlänge ist.

  • Schritt 2 – Kopieren Sie die Zeichenfolge mit der Methode strcpy() in ein char-Array.

  • Schritt 3 – Verwenden Sie eine for-Schleife für insgesamt 26 Iterationen.

  • Schritt 4 – Verwenden Sie in der for-Schleife die Methode count(), um die Anzahl der Vorkommen eines bestimmten Zeichens zu zählen.

  • Die Methode

    count() akzeptiert als erstes Argument einen Verweis auf die Startposition, als zweites Argument einen Verweis auf die Endposition und als drittes Argument ein Zeichen.

    Hier müssen wir den ASCII-Wert des Zeichens als Parameter übergeben und verwenden I + „a“, um den Wert zu erhalten.

  • Schritt 5 – Geben Sie „true“ zurück, wenn die count()-Methode größer oder gleich 3 zurückgibt.

  • Schritt 6 – Geben Sie false zurück, wenn die Schleife endet.

Beispiel

#include <bits/stdc++.h>
using namespace std;
// function to Check if a string can be split into 3 substrings such that one of them is a substring of the other two
string isSubStringPossible(string str, int len){

   //    converting str to char array.
   char char_array[len + 1];
   
   // copy string to char array
   strcpy(char_array, str.c_str());
   
   // make 26 iterations
   for (int i = 0; i < 26; i++){
   
      // Using count() to count the occurrence of each character in the array, and return 'yes' if any character occurs more than 2 times.
      if (count(char_array, char_array + len, i + 'a') >= 2)
         return "YES";
   }
   return "NO";
}
int main(){
   string str = "tutorials";
   int len = str.length();
   cout << "The given string can be splited into 3 substrings such that one of them is a substring of the other two - " << isSubStringPossible(str, len);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The given string can be splited into 3 substrings such that one of them is a substring of the other two - Yes
Nach dem Login kopieren
Nach dem Login kopieren

Zeitliche Komplexität – O(N), da die count()-Methode über das char-Array iteriert, um die Anzahl der Zeichen zu zählen. Außerdem benötigt die Methode strcpy() O(N) Zeit.

Raumkomplexität – O(N), weil wir die Zeichenfolge in einem Zeichenarray speichern.

Fazit

Wir haben zwei Möglichkeiten kennengelernt, einen String in drei Teilstrings aufzuteilen, sodass ein Teilstring ein Teilstring von zwei anderen Teilstrings sein kann. Der Code der zweiten Methode ist besser lesbar und anfängerfreundlicher, aber zeit- und platzaufwändiger.

Das obige ist der detaillierte Inhalt vonPrüft, ob ein String in drei Teilstrings aufgeteilt werden kann, wobei ein Teilstring ein Teilstring der anderen beiden Teilstrings ist. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Rechtschreibprüfung funktioniert in Teams nicht [Behoben] Rechtschreibprüfung funktioniert in Teams nicht [Behoben] Mar 06, 2024 am 09:10 AM

Uns ist aufgefallen, dass die Rechtschreibprüfung für Teams manchmal nicht mehr funktioniert. Die Rechtschreibprüfung ist ein wesentliches Werkzeug für eine effektive Kommunikation, und jeder Angriff darauf kann zu erheblichen Störungen des Arbeitsablaufs führen. In diesem Artikel untersuchen wir häufige Gründe, warum die Rechtschreibprüfung möglicherweise nicht wie erwartet funktioniert, und wie Sie sie in den vorherigen Zustand zurückversetzen können. Wenn die Rechtschreibprüfung in Teams nicht funktioniert, befolgen Sie die in diesem Artikel genannten Lösungen. Warum funktioniert die Rechtschreibprüfung von Microsoft nicht? Es kann mehrere Gründe dafür geben, dass die Rechtschreibprüfung von Microsoft nicht ordnungsgemäß funktioniert. Zu diesen Gründen gehören inkompatible Spracheinstellungen, deaktivierte Rechtschreibprüfung, beschädigte MSTeam- oder MSOffice-Installation usw. Außerdem veraltete MSTeams und MSOf

Wie überprüfe ich, ob die Anwendung in Python geöffnet ist? Wie überprüfe ich, ob die Anwendung in Python geöffnet ist? Aug 26, 2023 pm 06:49 PM

Das ausgeführte Programm wird als Prozess bezeichnet. Ein Prozess kann eine Anwendung sein, die auf dem aktuellen Betriebssystem ausgeführt wird, oder eine Anwendung, die mit dem Betriebssystem zusammenhängt. Wenn eine Anwendung an das Betriebssystem gebunden ist, erstellt sie zunächst einen Prozess, um sich selbst auszuführen. Andere Anwendungen sind zur Ausführung auf Betriebssystemdienste angewiesen. Bei den meisten Anwendungen handelt es sich um Betriebssystemdienste und Hintergrundanwendungen, die das Betriebssystem, die Software und die Hardware warten. In Python gibt es verschiedene Methoden, um zu überprüfen, ob die Anwendung geöffnet ist oder nicht. Lassen Sie uns sie einzeln im Detail kennenlernen. Verwenden der Funktion psutil.process_iter() psutil ist ein Modul in Python, das Benutzern eine Schnittstelle zum Abrufen von Informationen über laufende Prozesse und Systemauslastung bietet.

Wie überprüfe ich, ob ein Objekt in Python iterierbar ist? Wie überprüfe ich, ob ein Objekt in Python iterierbar ist? Aug 25, 2023 pm 10:05 PM

Ein iterierbares Objekt ist ein Objekt, über dessen alle Elemente mithilfe einer Schleife oder einer iterierbaren Funktion iteriert werden kann. Listen, Zeichenfolgen, Wörterbücher, Tupel usw. werden alle als iterierbare Objekte bezeichnet. In der Python-Sprache gibt es verschiedene Möglichkeiten zu überprüfen, ob ein Objekt iterierbar ist. Schauen wir uns das einzeln an. Verwenden von Schleifen In Python gibt es zwei Schleifentechniken: Eine verwendet die „for“-Schleife und die andere die „while“-Schleife. Mithilfe einer dieser beiden Schleifen können wir prüfen, ob ein bestimmtes Objekt iterierbar ist. Beispiel In diesem Beispiel versuchen wir, ein Objekt mithilfe einer „for“-Schleife zu iterieren und prüfen, ob es iteriert wird oder nicht. Unten ist der Code. l=["apple",22,"orang

So verwenden Sie die LOCATE-Funktion in MySQL, um die Position eines Teilstrings in einem String zu finden So verwenden Sie die LOCATE-Funktion in MySQL, um die Position eines Teilstrings in einem String zu finden Jul 25, 2023 am 09:45 AM

So verwenden Sie die LOCATE-Funktion in MySQL, um die Position eines Teilstrings in einem String zu finden. In MySQL gibt es viele Funktionen, die zum Verarbeiten von Strings verwendet werden können. Unter diesen ist die LOCATE-Funktion eine sehr nützliche Funktion, mit der die Position eines Teilstrings in einem String ermittelt werden kann. Die Syntax der LOCATE-Funktion lautet wie folgt: LOCATE(substring,string,[position]) wobei substring der zu findende Teilstring und string der zu findende Teilstring ist.

Zählen Sie rekursiv die Anzahl der Vorkommen eines Teilstrings in Java Zählen Sie rekursiv die Anzahl der Vorkommen eines Teilstrings in Java Sep 17, 2023 pm 07:49 PM

Gegeben seien zwei Strings str_1 und str_2. Das Ziel besteht darin, mithilfe eines rekursiven Verfahrens die Anzahl der Vorkommen der Teilzeichenfolge str2 in der Zeichenfolge str1 zu zählen. Eine rekursive Funktion ist eine Funktion, die sich innerhalb ihrer Definition selbst aufruft. Wenn str1 „Iknowthatyouknowthatiknow“ und str2 „know“ ist, beträgt die Anzahl der Vorkommen -3. Lassen Sie uns das anhand von Beispielen verstehen. Geben Sie beispielsweise str1="TPisTPareTPamTP", str2="TP" ein; geben Sie Countofoccurrencesofasubstringrecursi aus

Wie überprüfe ich den SSD-Gesundheitsstatus in Windows 11? So überprüfen Sie den SSD-Gesundheitsstatus unter Win11 Wie überprüfe ich den SSD-Gesundheitsstatus in Windows 11? So überprüfen Sie den SSD-Gesundheitsstatus unter Win11 Feb 14, 2024 pm 08:21 PM

Wie überprüfe ich den SSD-Gesundheitsstatus in Windows 11? Aufgrund ihrer hohen Lese-, Schreib- und Zugriffsgeschwindigkeit ersetzen SSDs schnell Festplatten. Obwohl sie zuverlässiger sind, müssen Sie dennoch den Zustand Ihrer SSDs in Windows 11 überprüfen. Wie bedient man es? In diesem Tutorial stellt Ihnen der Herausgeber die Methode vor. Methode 1: Verwenden Sie WMIC1, verwenden Sie die Tastenkombination Win+R, geben Sie wmic ein und drücken oder klicken Sie dann auf OK. Geben Sie 2 ein. Geben Sie nun den folgenden Befehl ein oder fügen Sie ihn ein, um den SSD-Gesundheitsstatus zu überprüfen: diskdrivegetstatus Wenn Sie die Meldung „Status: OK“ erhalten, funktioniert Ihr SSD-Laufwerk normal.

Die Funktion strtok_r() ist eine Funktion in der C-Sprache. Ihre Funktion besteht darin, eine Zeichenfolge in eine Reihe von Teilzeichenfolgen aufzuteilen. Die Funktion strtok_r() ist eine Funktion in der C-Sprache. Ihre Funktion besteht darin, eine Zeichenfolge in eine Reihe von Teilzeichenfolgen aufzuteilen. Aug 26, 2023 am 09:45 AM

Diese Funktion ähnelt der Funktion strtok(). Der einzige wesentliche Unterschied besteht in _r, einer so genannten reentrant-Funktion. Reentrant-Funktionen sind Funktionen, die während der Ausführung unterbrochen werden können. Diese Art von Funktion kann verwendet werden, um die Ausführung fortzusetzen. Daher sind reentrant-Funktionen Thread-sicher, was bedeutet, dass sie sicher von Threads unterbrochen werden können, ohne Schaden zu verursachen. Die Funktion strtok_r() verfügt über einen zusätzlichen Parameter namens context. Dadurch kann die Funktion an der richtigen Stelle wiederhergestellt werden. Die Syntax der Funktion strtok_r() lautet wie folgt: #include<string.h>char*strtok_r(char*string,constchar*limiter,char**

Wie kann man in Golang überprüfen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt? Wie kann man in Golang überprüfen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt? Mar 12, 2024 pm 09:42 PM

Wie kann man in Golang überprüfen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt? Beim Programmieren in Golang kommt es häufig vor, dass Sie prüfen müssen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt. Um diese Anforderung zu erfüllen, können wir die vom Strings-Paket in Golang bereitgestellten Funktionen verwenden, um dies zu erreichen. Als Nächstes stellen wir anhand spezifischer Codebeispiele ausführlich vor, wie Sie mit Golang überprüfen können, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt. In Golang können wir HasPrefix aus dem Strings-Paket verwenden

See all articles