Inhaltsverzeichnis
Beispiel
Methode 2
Algorithmus
Ausgabe
Heim Backend-Entwicklung C++ Die Anzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten

Die Anzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten

Sep 01, 2023 am 08:57 AM
长度 元音字母 子串数量

Die Anzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten

In diesem Problem müssen wir die Gesamtzahl der Teilzeichenfolgen der Länge K ermitteln, die genau K Vokale enthalten. Wir werden zwei verschiedene Möglichkeiten zur Lösung des Problems sehen. Mit einer einfachen Methode können wir die Anzahl der Vokale in jedem Teilstring der Länge K überprüfen. Darüber hinaus können wir dieses Problem mit einem Schiebefenster-Ansatz lösen.

Problemstellung – Wir erhalten eine Zeichenfolge str der Länge N, die Klein- und Großbuchstaben enthält. Wir müssen die Gesamtzahl der Teilzeichenfolgen der Länge K zählen, die genau X Vokale enthalten.

Beispiel

Eingabe– str = „TutorialsPoint“, K = 3, X = 2

Ausgabe– 6

Erklärung– Teilzeichenfolgen der Länge 3, die genau 2 Vokale enthalten, sind: „uto“, „ori“, „ria“, „ial“, „Poi“ und „oin“. p>

Eingabe– str = ‚aeiou‘, K = 2, X = 2

Ausgabe– 4

Erklärung- Teilzeichenfolgen der Länge 2, die genau 2 Vokale enthalten, sind: „ae“, „ei“, „io“ und „ou“.

Eingabe– str = ‚fghjsdfdffg‘, K = 5, X = 1

Ausgabe– 0

Erklärung- Die Zeichenfolge str enthält keine Vokale, daher können wir keine Teilzeichenfolge finden, die 1 Vokal enthält.

Methode 1

Mit dieser Methode finden wir jeden Teilstring der Länge K von str. Danach zählen wir die Gesamtzahl der Vokale in einer bestimmten Teilzeichenfolge und wenn wir feststellen, dass sie gleich X sind, können wir die Anzahl um 1 erhöhen.

Algorithmus

  • Initialisieren Sie in der Funktion cntSubStr() die Variable „cnt“ auf Null, um die Gesamtzahl der Teilzeichenfolgen zu speichern.

  • Verwenden Sie eine Schleife, um vom 0. Index zu den len-K-Indizes zu iterieren, wobei „len“ die Länge der Zeichenfolge ist.

  • Verwenden Sie in der Schleife die Methode substr(), um den Teilstring der Länge K ab dem i-ten Index abzurufen.

  • Führen Sie die Funktion countVowel() aus, um die Gesamtzahl der Vokale in der Teilzeichenfolge zu zählen.

    • Initialisieren Sie in der Funktion countVowel() die Variable „vowels“ auf Null, um die Gesamtzahl der Vokale zu speichern.

    • Durchlaufen Sie die Teilzeichenfolge, das aktuelle Zeichen ist ein Vokal, und addieren Sie 1 zum Wert von „Vokale“.

    • Zurück zu „Vokal“.

  • Wenn in der Funktion cntSubStr() die Gesamtzahl der Vokale in der Teilzeichenfolge gleich X ist, erhöhen Sie den Wert von „cnt“ um 1.

  • Gibt den Wert von „cnt“ zurück.

Beispiel

#include <bits/stdc++.h>
using namespace std;

// function to count the total number of vowels in a string
int cntVowels(string alpha) {
   int vows = 0;
   for (int i = 0; i < alpha.length(); i++) {
      if (alpha[i] == 'a' || alpha[i] == 'e' || alpha[i] == 'i' || alpha[i] == 'o' ||
          alpha[i] == 'u' || alpha[i] == 'A' || alpha[i] == 'E' || alpha[i] == 'I' ||
          alpha[i] == 'O' || alpha[i] == 'U')
          vows++;
   }
   return vows;
}
int cntSubstr(string str, int K, int X) {
   int cnt = 0;
   // traverse the string and check for the total number of vowels in each substring of length K
    for (int i = 0; i <= str.length() - K; i++) {
       // get the substring of length K starting from index i
       string sub = str.substr(i, K);
       // check if the total number of vowels in the substring is equal to X, then increment cnt
       if (cntVowels(sub) == X)
          cnt++;
   }
   return cnt;
}
// Driver code
int main(void) {
   string str = "TutorialsPoint";
   int K = 3, X = 2;
   cout << "The total number of substrings of length " << K << " containing " << X << " vowels is " << cntSubstr(str, K, X);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The total number of substrings of length 3 containing 2 vowels is 6
Nach dem Login kopieren
Nach dem Login kopieren

Zeitkomplexität– O(N*K), wenn wir über str iterieren, iterieren wir über die Teilzeichenfolgen in der Funktion countVowel().

Raumkomplexität – O(K), da wir Teilzeichenfolgen speichern

Methode 2

Wir werden die Schiebefenstertechnik verwenden, um die Probleme in diesem Ansatz zu lösen. Wir entfernen das erste Zeichen aus der Teilzeichenfolge und fügen am Ende 1 Zeichen hinzu. Darüber hinaus verfolgen wir die Anzahl der Vokale in der aktuellen Teilzeichenfolge. Wenn diese gleich X ist, können wir die Anzahl um 1 erhöhen.

Algorithmus

  • Definieren Sie die Funktion isVowel(), um einen booleschen Wert zurückzugeben, basierend darauf, ob ein bestimmtes Zeichen ein Vokal ist.

  • In der Funktion cntSubStr() definieren Sie „total_vow“ und initialisieren es auf Null, um die Gesamtzahl der Vokale im aktuellen Fenster zu speichern.

  • Ermitteln Sie ausgehend vom 0. Index die Gesamtzahl der Vokale in der Teilzeichenfolge der Länge K, die das erste Fenster darstellt.

  • Initialisieren Sie die Variable „cnt“ auf 1 oder 0, je nachdem, ob der Wert von „vow“ gleich X ist.

  • Beginnen Sie mit dem Durchlaufen der Zeichenfolge von Position 1 bis zum Index len – K.

  • Wenn das (i-1)-Zeichen ein Vokal ist, dekrementieren Sie den Wert von „total_vow“ um 1.

  • Wenn das Zeichen am (i - 1 + K)-ten Index ein Vokal ist, erhöhen Sie den Wert von „total_vow“ um 1.

  • Wenn „total_vow“ gleich X ist, erhöhen Sie „cnt“ um 1.

  • Gibt den Wert von „cnt“ zurück.

Beispiel

#include <bits/stdc++.h>
using namespace std;
bool isVowel(char ch) {
   // convert character to lowercase
   ch = tolower(ch);
   return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u');
}
int cntSubstr(string str, int K, int X) {
   // To store total vowels
   int total_vow = 0;
   // Count the number of vowels in the first window
   for (int p = 0; p < K; p++)
       if (isVowel(str[p]))
            total_vow++;
   // to store the total number of substrings of length K containing X vowels
   int cnt = 0;
   // If the first window contains exactly X vowels, initialize cnt as 1
   cnt = total_vow == X ? 1 : 0;
   // traverse the string
   for (int i = 1; i <= str.length() - K; i++) {
      // exclude the (i - 1)th character from the window and update the total_vow
      total_vow = isVowel(str[i - 1]) ? total_vow - 1 : total_vow;
      // Add [i-1+K]th character to the current window and update total_vow
      total_vow = isVowel(str[i - 1 + K]) ? total_vow + 1 : total_vow;
      // If the current window contains exactly X vowels, increment cnt
      if (total_vow == X)
          cnt++;
   }
   return cnt;
}
int main(void) {
   string str = "TutorialsPoint";
   int K = 3, X = 2;
   cout << "The total number of substrings of length " << K << " containing " << X << " vowels is " << cntSubstr(str, K, X);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The total number of substrings of length 3 containing 2 vowels is 6
Nach dem Login kopieren
Nach dem Login kopieren

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

Raumkomplexität – O(1), da wir keinen zusätzlichen Raum verbrauchen.

Wir haben die zweite Methode optimiert und die zeitliche Komplexität des Codes reduziert. Darüber hinaus optimieren wir auch die räumliche Komplexität der zweiten Methode. Hier finden wir die Gesamtzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten, aber der Programmierer könnte versuchen, die Gesamtzahl der Teilzeichenfolgen beliebiger Länge zu ermitteln, die genau K Vokale enthalten.

Das obige ist der detaillierte Inhalt vonDie Anzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 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)

Ä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,

Wie hoch ist die Längenbeschränkung für PHP-Arrays? Wie hoch ist die Längenbeschränkung für PHP-Arrays? Mar 13, 2024 pm 06:30 PM

In PHP gibt es keine feste Begrenzung der Länge eines Arrays, sie kann dynamisch an die Speichergröße des Systems angepasst werden. In PHP ist ein Array eine sehr flexible Datenstruktur, die eine beliebige Anzahl von Elementen speichern kann, und jedes Element kann ein Wert eines beliebigen Typs oder sogar ein anderes Array sein. Die Längenbeschränkung von PHP-Arrays hängt hauptsächlich von der Speichergröße des Systems und der Speicherbeschränkung der PHP-Konfiguration ab. Wenn der Systemspeicher groß genug und das Speicherlimit von PHP hoch genug ist, kann die Länge des Arrays im Allgemeinen sehr groß sein. Wenn Ihr System jedoch nur noch wenig Arbeitsspeicher hat oder

Gibt es eine Begrenzung der PHP-Array-Länge? Gibt es eine Begrenzung der PHP-Array-Länge? Mar 13, 2024 pm 06:36 PM

Gibt es eine Begrenzung der PHP-Array-Länge? Benötigen Sie spezifische Codebeispiele? In PHP unterliegt die Array-Länge keiner festen Grenze, und die Array-Größe kann dynamisch entsprechend der tatsächlichen Grenze des Systemspeichers angepasst werden. Arrays in PHP sind dynamische Arrays, sodass sie je nach Bedarf dynamisch wachsen oder schrumpfen können. In PHP ist ein Array eine geordnete zugeordnete Datenstruktur, und auf Array-Elemente kann über Array-Indizes oder assoziative Array-Schlüsselwerte zugegriffen werden. Sehen wir uns ein konkretes Codebeispiel an, um zu zeigen, ob die Länge des PHP-Arrays begrenzt ist. Zuerst können wir den folgenden Code übergeben

Ermitteln Sie anhand eines gegebenen Arrays die maximale Summe der Längen zweier Zeichenfolgen, die nicht dieselben Zeichen enthalten. Ermitteln Sie anhand eines gegebenen Arrays die maximale Summe der Längen zweier Zeichenfolgen, die nicht dieselben Zeichen enthalten. Aug 29, 2023 pm 06:45 PM

Der Zweck dieses Artikels besteht darin, ein Programm zu implementieren, das die Summe der Längen eines Zeichenfolgenpaars maximiert, das in einem bestimmten Array keine gemeinsamen Zeichen hat. Per Definition ist eine Zeichenfolge eine Ansammlung von Zeichen. Problemstellung Implementieren Sie ein Programm, um die Summe der Längen eines Zeichenfolgenpaars zu maximieren, das in einem bestimmten Array keine gemeinsamen Zeichen hat. Beispiel 1Lassen Sie uns das Eingabearray betrachten: a[]=["efgh", "hat", "fto", "car", "wxyz", "fan"]Ausgabe erhalten: 8 Beschreibung Die Zeichenfolgen "abcd" und "wxyz" enthalten keine gemeinsamen Zeichen ". Infolgedessen beträgt die kombinierte Länge der beiden Zeichenfolgen 4+4, was 8 entspricht, was die längste Länge aller möglichen Paare ist. Beispiel 2Letu

Mehrere Perspektiven zur Verwendung und Bedeutung der Len-Funktion Mehrere Perspektiven zur Verwendung und Bedeutung der Len-Funktion Dec 28, 2023 am 08:38 AM

Die Rolle und Bedeutung der len-Funktion wird aus verschiedenen Blickwinkeln interpretiert. Die len-Funktion ist eine der am häufigsten verwendeten Funktionen in der Programmiersprache Python. Es wird hauptsächlich verwendet, um die Länge oder Anzahl der Elemente eines Containerobjekts (z. B. Zeichenfolge, Liste, Tupel usw.) zurückzugeben. Diese einfache Funktion spielt beim Schreiben von Programmen eine sehr wichtige Rolle und ihre Funktion und Bedeutung kann aus vielen Blickwinkeln interpretiert werden. In diesem Artikel wird die len-Funktion unter den Gesichtspunkten Leistung, Lesbarkeit und Containertyp erläutert und spezifische Codebeispiele bereitgestellt. 1. Leistungsperspektive Bei der Verarbeitung großer Datenmengen die Leistung des Programms

So überprüfen Sie die Länge des Eingabetextes in Golang So überprüfen Sie die Länge des Eingabetextes in Golang Jun 24, 2023 am 11:52 AM

In Golang ist die Validierung der Länge des Eingabetextes eine häufige Notwendigkeit. Durch die Validierung können wir sicherstellen, dass der eingegebene Text bestimmte Anforderungen erfüllt und innerhalb der von uns erwarteten Länge liegt. In diesem Artikel erfahren Sie, wie Sie die Länge des Eingabetexts mithilfe von Golang überprüfen. Zuerst müssen wir die häufig verwendeten String-Funktionen in Golang verstehen. Unter anderem wird die Funktion len() verwendet, um die Länge der Zeichenfolge zu berechnen. Der folgende Code berechnet beispielsweise die Länge der Zeichenfolge „helloworld“: str:=

Wie finde ich die Länge der Hypotenuse in Java? Wie finde ich die Länge der Hypotenuse in Java? Sep 09, 2023 pm 10:33 PM

Die Hypotenuse ist die längste Seite eines rechtwinkligen Dreiecks gegenüber dem rechten Winkel. Die Länge der Hypotenuse kann mit dem Satz des Pythagoras ermittelt werden. Nach dem Satz des Pythagoras ist die Summe der Quadrate der Längen zweier Seiten gleich dem Quadrat der Länge der dritten Seite, d. h. a2+b2=c2, wobei a, b und c die drei Seiten von darstellen ein rechtwinkliges Dreieck. Also Hypotenuse=Math.sqrt(Math.pow(base,2)+Math.pow(height,2)) In diesem Artikel erfahren Sie, wie Sie die Länge der Hypotenuse mithilfe der Programmiersprache Java ermitteln. Lassen Sie mich Ihnen einige Beispiele zeigen. Die chinesische Übersetzung von Instanz 1 lautet: Beispiel 1. Angenommen, die Basislänge und -höhe betragen 3 bzw. 4. Dann verwenden Sie die Formel des Pythagoras-Theorems, Länge

Die Anzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten Die Anzahl der Teilzeichenfolgen der Länge K, die genau X Vokale enthalten Sep 01, 2023 am 08:57 AM

Bei diesem Problem müssen wir die Gesamtzahl der Teilzeichenfolgen der Länge K ermitteln, die genau K Vokale enthalten. Wir werden zwei verschiedene Möglichkeiten zur Lösung des Problems sehen. Mit einer einfachen Methode können wir die Anzahl der Vokale in jedem Teilstring der Länge K überprüfen. Darüber hinaus können wir dieses Problem mit einem Schiebefenster-Ansatz lösen. Problemstellung: Wir erhalten eine Zeichenfolge str der Länge N, die alphabetische Klein- und Großbuchstaben enthält. Wir müssen die Gesamtzahl der Teilzeichenfolgen der Länge K zählen, die genau X Vokale enthalten. Beispieleingabe – str="TutorialsPoint",K=3,X=2 Ausgabe – 6 Erläuterung – Ein Teilstring der Länge 3, der genau 2 Vokale enthält, ist: 'uto', 'ori', 'ri

See all articles