Table des matières
Exemple
Méthode 2
Algorithme
Sortie
Maison développement back-end C++ Le nombre de sous-chaînes de longueur K contenant exactement X voyelles

Le nombre de sous-chaînes de longueur K contenant exactement X voyelles

Sep 01, 2023 am 08:57 AM
长度 voyelles Nombre de sous-chaînes

Le nombre de sous-chaînes de longueur K contenant exactement X voyelles

Dans ce problème, nous devons trouver le nombre total de sous-chaînes de longueur K qui contiennent exactement K voyelles. Nous verrons deux manières différentes de résoudre le problème. Nous pouvons utiliser une méthode simple pour vérifier le nombre de voyelles dans chaque sous-chaîne de longueur K. De plus, nous pouvons utiliser une approche de fenêtre glissante pour résoudre ce problème.

Énoncé du problème - On nous donne une chaîne str de longueur N, contenant des caractères alphabétiques minuscules et majuscules. Nous devons compter le nombre total de sous-chaînes de longueur K qui contiennent exactement X voyelles.

Exemple

Entrée– str = "TutorialsPoint", K = 3, X = 2

Sortie– 6

Explication– Les sous-chaînes de longueur 3 contenant exactement 2 voyelles sont : 'uto', 'ori', 'ria', 'ial', 'Poi' et 'oin'. p>

Entrée– str = 'aeiou', K = 2, X = 2

Sortie– 4

Explication- Les sous-chaînes de longueur 2 et contenant exactement 2 voyelles sont : 'ae', 'ei', 'io' et 'ou'.

Entrée– str = 'fghjsdfdffg', K = 5, X = 1

Sortie– 0

Explication- La chaîne str ne contient aucune voyelle, nous ne trouvons donc aucune sous-chaîne contenant 1 voyelle.

Méthode 1

Dans cette méthode, nous trouverons chaque sous-chaîne de longueur K de str. Après cela, nous compterons le nombre total de voyelles dans une sous-chaîne spécifique et si nous constatons qu'elles sont égales à X, nous pouvons augmenter le nombre de 1.

Algorithme

  • Dans la fonction cntSubStr(), initialisez la variable "cnt" à zéro pour stocker le nombre total de sous-chaînes.

  • Utilisez une boucle pour parcourir du 0ème index aux indices len - K, où "len" est la longueur de la chaîne.

  • Dans la boucle, utilisez la méthode substr() pour obtenir la sous-chaîne de longueur K à partir du i-ième index.

  • Exécutez la fonction countVowel() pour compter le nombre total de voyelles dans la sous-chaîne.

    • Dans la fonction countVowel(), initialisez la variable "voyelles" à zéro pour stocker le nombre total de voyelles.

    • Parcourez la sous-chaîne, le caractère actuel est une voyelle et ajoutez 1 à la valeur de « voyelles ».

    • Retour à "voyelle".

  • Dans la fonction cntSubStr(), si le nombre total de voyelles dans la sous-chaîne est égal à X, augmentez la valeur de "cnt" de 1.

  • Renvoyer la valeur de "cnt".

Exemple

#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;
}
Copier après la connexion

Sortie

The total number of substrings of length 3 containing 2 vowels is 6
Copier après la connexion
Copier après la connexion

Complexité temporelle– O(N*K), lorsque nous parcourons str, parcourons les sous-chaînes dans la fonction countVowel().

Complexité spatiale – O(K) puisque nous stockons les sous-chaînes

Méthode 2

Nous utiliserons la technique de la fenêtre coulissante pour résoudre les problèmes de cette approche. Nous supprimerons le premier caractère de la sous-chaîne et ajouterons 1 caractère à la fin. De plus, nous garderons une trace du nombre de voyelles dans la sous-chaîne actuelle, et s'il est égal à X, nous pouvons incrémenter le nombre de 1.

Algorithme

  • Définissez la fonction isVowel() pour renvoyer une valeur booléenne selon qu'un caractère spécifique est une voyelle.

  • Dans la fonction cntSubStr(), définissez "total_vow" et initialisez-le à zéro pour stocker le total des voyelles dans la fenêtre actuelle.

  • À partir du 0ème index, trouvez le nombre total de voyelles dans la sous-chaîne de longueur K, représentant la première fenêtre.

  • Initialisez la variable "cnt" à 1 ou 0 selon que la valeur de "vow" est égale à X.

  • Commencez à parcourir la chaîne de la position 1 à l'indice len – K.

  • Si le caractère (i-1) est une voyelle, décrémentez la valeur de "total_vow" de 1.

  • Si le caractère au (i - 1 + K)ème index est une voyelle, augmentez la valeur de "total_vow" de 1.

  • Si "total_vow" est égal à X, augmentez "cnt" de 1.

  • Renvoyer la valeur de "cnt".

Exemple

#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;
}
Copier après la connexion

Sortie

The total number of substrings of length 3 containing 2 vowels is 6
Copier après la connexion
Copier après la connexion

Complexité temporelle - O(N) puisque nous parcourons la chaîne.

Complexité spatiale - O(1) puisque nous n'utilisons aucun espace supplémentaire.

Nous avons optimisé la deuxième méthode et réduit la complexité temporelle du code. De plus, nous optimisons également la complexité spatiale de la deuxième méthode. Ici, nous trouvons le nombre total de sous-chaînes de longueur K qui contiennent exactement X voyelles, mais le programmeur pourrait essayer de trouver le nombre total de sous-chaînes de n'importe quelle longueur contenant exactement K voyelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Modifier une chaîne en réorganisant les voyelles en fonction de leur position d'index dans la chaîne Modifier une chaîne en réorganisant les voyelles en fonction de leur position d'index dans la chaîne Sep 06, 2023 pm 06:53 PM

Dans cet article, nous verrons comment modifier une chaîne donnée en C++ en réorganisant les voyelles par ordre alphabétique à leurs indices respectifs. Nous expliquerons également les méthodes utilisées pour résoudre ce problème et fournirons des exemples avec des cas de test. Énoncé du problème Étant donné une chaîne, réorganisez les voyelles à leurs indices respectifs par ordre alphabétique. Les consonnes de la chaîne doivent conserver leur ordre d'origine. Par exemple, étant donné la chaîne « tutorialspoint », le résultat devrait être « tatiriolspount ». Méthode Ce problème peut être résolu à l'aide d'un algorithme simple. Nous pouvons d’abord créer une chaîne distincte contenant toutes les voyelles de la chaîne donnée dans leur ordre respectif. Nous pouvons ensuite trier cette chaîne par ordre alphabétique. enfin,

Quelle est la limite de longueur du tableau PHP ? Quelle est la limite de longueur du tableau PHP ? Mar 13, 2024 pm 06:30 PM

Il n'y a pas de limite fixe à la longueur d'un tableau en PHP, elle peut être ajustée dynamiquement en fonction de la taille de la mémoire du système. En PHP, un tableau est une structure de données très flexible qui peut stocker n'importe quel nombre d'éléments, et chaque élément peut être une valeur de n'importe quel type, ou même un autre tableau. La limite de longueur des tableaux PHP dépend principalement de la taille de la mémoire du système et de la limite de mémoire de la configuration PHP. De manière générale, si la mémoire du système est suffisamment grande et que la limite de mémoire de PHP est suffisamment élevée, la longueur du tableau peut être très grande. Cependant, si votre système manque de mémoire ou

Y a-t-il une limite à la longueur du tableau PHP ? Y a-t-il une limite à la longueur du tableau PHP ? Mar 13, 2024 pm 06:36 PM

Y a-t-il une limite à la longueur du tableau PHP ? Besoin d'exemples de code spécifiques En PHP, la longueur du tableau n'est pas soumise à une limite fixe et la taille du tableau peut être ajustée dynamiquement en fonction de la limite réelle de la mémoire système. Les tableaux en PHP sont des tableaux dynamiques, ils peuvent donc s'agrandir ou se réduire dynamiquement selon les besoins. En PHP, un tableau est une structure de données mappée ordonnée, et les éléments du tableau sont accessibles à l'aide d'indices de tableau ou de valeurs de clés de tableau associatives. Examinons un exemple de code spécifique pour démontrer si la longueur du tableau PHP est limitée. Tout d'abord, nous pouvons passer le code suivant

Étant donné un tableau, trouvez la somme maximale des longueurs de deux chaînes qui n'ont pas les mêmes caractères. Étant donné un tableau, trouvez la somme maximale des longueurs de deux chaînes qui n'ont pas les mêmes caractères. Aug 29, 2023 pm 06:45 PM

Le but de cet article est d'implémenter un programme qui maximise la somme des longueurs d'une paire de chaînes n'ayant aucun caractère commun dans un tableau donné. Par définition, une chaîne est une collection de caractères. Énoncé du problème Implémentez un programme pour maximiser la somme des longueurs d'une paire de chaînes qui n'ont pas de caractères communs dans un tableau donné. Exemple 1Considérons le tableau d'entrée : a[]=["efgh","hat","fto","car","wxyz","fan"]Sortie obtenue :8 Description Il n'y a aucun caractère commun dans les chaînes "abcd" et "wxyz ". En conséquence, la longueur combinée des deux chaînes est de 4+4, ce qui est égal à 8, ce qui est la longueur la plus longue parmi toutes les paires possibles. Exemple 2Letu

Multiples perspectives sur l'utilisation et l'importance de la fonction len Multiples perspectives sur l'utilisation et l'importance de la fonction len Dec 28, 2023 am 08:38 AM

Le rôle et la signification de la fonction len sont interprétés sous différents angles. La fonction len est l'une des fonctions couramment utilisées dans le langage de programmation Python. Il est principalement utilisé pour renvoyer la longueur ou le nombre d'éléments d'un objet conteneur (tel qu'une chaîne, une liste, un tuple, etc.). Cette fonction simple joue un rôle très important lors de l’écriture de programmes, et sa fonction et sa signification peuvent être interprétées sous de nombreux angles. Cet article expliquera la fonction len du point de vue des performances, de la lisibilité et du type de conteneur, et fournira des exemples de code spécifiques. 1. Perspective de performance Lors du traitement de données à grande échelle, les performances du programme

Comment vérifier la longueur du texte saisi dans Golang Comment vérifier la longueur du texte saisi dans Golang Jun 24, 2023 am 11:52 AM

En Golang, valider la longueur du texte saisi est un besoin courant. Grâce à la validation, nous pouvons garantir que le texte saisi répond à des exigences spécifiques et correspond à la longueur attendue. Dans cet article, nous explorerons comment vérifier la longueur du texte saisi à l'aide de Golang. Tout d’abord, nous devons comprendre les fonctions de chaîne couramment utilisées dans Golang. Parmi elles, la fonction len() est utilisée pour calculer la longueur de la chaîne. Par exemple, le code suivant calcule la longueur de la chaîne « helloworld » : str:=

Le nombre de sous-chaînes de longueur K contenant exactement X voyelles Le nombre de sous-chaînes de longueur K contenant exactement X voyelles Sep 01, 2023 am 08:57 AM

Dans ce problème, nous devons trouver le nombre total de sous-chaînes de longueur K qui contiennent exactement K voyelles. Nous verrons deux manières différentes de résoudre le problème. Nous pouvons utiliser une méthode simple pour vérifier le nombre de voyelles dans chaque sous-chaîne de longueur K. De plus, nous pouvons utiliser une approche de fenêtre glissante pour résoudre ce problème. Énoncé du problème - On nous donne une chaîne str de longueur N, contenant des caractères alphabétiques minuscules et majuscules. Nous devons compter le nombre total de sous-chaînes de longueur K qui contiennent exactement X voyelles. Exemple d'entrée – str="TutorialsPoint",K=3,X=2 Sortie –6 Explication – Une sous-chaîne de longueur 3 et contenant exactement 2 voyelles est : 'uto', 'ori', 'ri

Comment trouver la longueur de l'hypoténuse en Java ? Comment trouver la longueur de l'hypoténuse en Java ? Sep 09, 2023 pm 10:33 PM

L'hypoténuse est le côté le plus long d'un triangle rectangle opposé à l'angle droit. La longueur de l'hypoténuse peut être déterminée à l'aide du théorème de Pythagore. Selon le théorème de Pythagore, la somme des carrés des longueurs de deux côtés est égale au carré de la longueur du troisième côté, c'est-à-dire a2+b2=c2 où a, b et c représentent les trois côtés de un triangle rectangle. Donc, Hypotenuse=Math.sqrt(Math.pow(base,2)+Math.pow(height,2)) Dans cet article, nous verrons comment trouver la longueur de l'hypoténuse à l'aide du langage de programmation Java. Laissez-moi vous montrer quelques exemples. La traduction chinoise de l'instance-1 est : Exemple-1 Supposons que la longueur et la hauteur de la base soient respectivement 3 et 4. Ensuite, en utilisant la formule du théorème de Pythagore, Longueur

See all articles