Table des matières
Exemple
Instructions
Méthode 2
Algorithme
Sortie
Conclusion
Maison développement back-end C++ Vérifie si une chaîne peut être divisée en trois sous-chaînes, où une sous-chaîne est une sous-chaîne des deux autres sous-chaînes

Vérifie si une chaîne peut être divisée en trois sous-chaînes, où une sous-chaîne est une sous-chaîne des deux autres sous-chaînes

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

Vérifie si une chaîne peut être divisée en trois sous-chaînes, où une sous-chaîne est une sous-chaîne des deux autres sous-chaînes

Dans ce problème, nous devons diviser la chaîne donnée afin que la troisième sous-chaîne puisse être une sous-chaîne des deux premières sous-chaînes.

Pensons à une solution. La troisième chaîne peut être une sous-chaîne des deux premières chaînes uniquement si les deux premières chaînes contiennent tous les caractères de la troisième chaîne. Nous devons donc trouver au moins un caractère dans la chaîne donnée avec une fréquence supérieure à 3, et nous pouvons prendre la troisième sous-chaîne de ce caractère unique.

Énoncé du problème - On nous donne une chaîne str contenant N caractères alphabétiques minuscules. Nous devons vérifier si nous pouvons diviser la chaîne en trois sous-chaînes a, b et c de telle sorte que la sous-chaîne c soit une sous-chaîne de a et b. Imprimez "oui" ou "non" selon que 3 sous-chaînes peuvent être trouvées.

Exemple

Input –  str = "tutorialsPoint"
Copier après la connexion
Output – ‘Yes’
Copier après la connexion
Copier après la connexion

Instructions

Ici, nous pouvons diviser la chaîne en "tu", "torialsPoin" et "t". La troisième chaîne est donc une sous-chaîne des deux premières chaînes.

Input –  str = "tutorials"
Copier après la connexion
Output – ‘No’
Copier après la connexion

Instructions

Nous ne pouvons pas diviser la chaîne en trois sous-chaînes en fonction de la condition donnée car la fréquence d'un caractère n'est pas supérieure à 3.

Input –  str = "hhhhhhhh"
Copier après la connexion
Output – ‘Yes’
Copier après la connexion
Copier après la connexion

Instructions

Selon les conditions données, les trois sous-chaînes peuvent être « h », « h » et « hhhhhh ».

Méthode 1

Dans cette méthode, nous utiliserons un tableau pour stocker la fréquence de chaque caractère. Après cela, nous vérifierons les caractères dont la fréquence est supérieure ou égale à 3.

Algorithme

  • Étape 1 - Définissez le tableau "freq" d'une longueur égale à 26.

  • Étape 2 - Parcourez la chaîne pour compter la fréquence des caractères. Dans la boucle for, incrémentez la valeur de freq[str[i] – 'a']. Ici, str[i] – 'a' donne un index compris entre 0 et 26.

  • Étape 3 - Maintenant, parcourez le tableau "freq" et renvoyez vrai si la valeur d'un index du tableau est supérieure à "3".

  • Étape 4 - Renvoie true lorsque la boucle se termine.

  • Étape 5 - Imprimez "Oui" ou "Non" en fonction de la valeur de retour de la fonction isSUbStringPossible().

Exemple

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

Sortie

The given string can be splited into 3 substrings such that one of them is a substring of the other two - Yes
Copier après la connexion
Copier après la connexion

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

Complexité spatiale - O(1) car nous utilisons des tableaux de longueur constante.

Méthode 2

Dans cette méthode, nous convertissons d'abord la chaîne en un tableau de caractères. Après cela, nous utilisons la méthode count() pour compter la fréquence de caractères spécifiques dans le tableau.

Algorithme

  • Étape 1 - Créez un tableau de taille "len + 1", où "len" est la longueur de la chaîne.

  • Étape 2 - Copiez la chaîne dans un tableau de caractères à l'aide de la méthode strcpy().

  • Étape 3 - Utilisez une boucle for pour un total de 26 itérations.

  • Étape 4 - Dans la boucle for, utilisez la méthode count() pour compter le nombre d'occurrences d'un caractère spécifique.

  • La méthode

    count() prend une référence à la position de départ comme premier argument, une référence à la position de fin comme deuxième argument et un caractère comme troisième argument.

    Ici, nous devons passer la valeur ASCII du caractère comme paramètre et nous utilisons I + 'a' pour obtenir la valeur.

  • Étape 5 - Renvoie true si la méthode count() renvoie supérieur ou égal à 3.

  • Étape 6 - Renvoie false lorsque la boucle se termine.

Exemple

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

Sortie

The given string can be splited into 3 substrings such that one of them is a substring of the other two - Yes
Copier après la connexion
Copier après la connexion

Complexité temporelle - O(N) car la méthode count() parcourt le tableau de caractères pour compter le nombre de caractères. De plus, la méthode strcpy() prend un temps O(N).

Complexité spatiale - O(N) car nous stockons la chaîne dans un tableau de caractères.

Conclusion

Nous avons appris deux façons de diviser une chaîne en trois sous-chaînes afin qu'une sous-chaîne puisse être la sous-chaîne de deux autres sous-chaînes. Le code de la deuxième méthode est plus lisible et convivial pour les débutants, mais il est plus coûteux en temps et en espace.

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment vérifier si l'application est ouverte en Python ? Comment vérifier si l'application est ouverte en Python ? Aug 26, 2023 pm 06:49 PM

Le programme en cours d'exécution est appelé un processus. Un processus peut être une application exécutée sur le système d'exploitation actuel ou une application liée au système d'exploitation. Si une application est liée au système d'exploitation, elle crée d'abord un processus pour s'exécuter. D'autres applications s'appuient sur les services du système d'exploitation pour leur exécution. La plupart des applications sont des services du système d'exploitation et des applications d'arrière-plan qui gèrent le système d'exploitation, les logiciels et le matériel. En python, nous avons différentes méthodes pour vérifier si l'application est ouverte ou non. Apprenons-les en détail un par un. Utilisation de la fonction psutil.process_iter() psutil est un module en Python qui fournit aux utilisateurs une interface pour récupérer des informations sur les processus en cours d'exécution et l'utilisation du système.

La vérification orthographique ne fonctionne pas dans Teams [Corrigé] La vérification orthographique ne fonctionne pas dans Teams [Corrigé] Mar 06, 2024 am 09:10 AM

Nous avons commencé à remarquer que parfois la vérification orthographique cesse de fonctionner pour Teams. La vérification orthographique est un outil essentiel pour une communication efficace, et toute attaque contre celui-ci peut perturber considérablement le flux de travail. Dans cet article, nous explorerons les raisons courantes pour lesquelles la vérification orthographique peut ne pas fonctionner comme prévu et comment la restaurer à son état précédent. Ainsi, si la vérification orthographique ne fonctionne pas dans Teams, suivez les solutions mentionnées dans cet article. Pourquoi la vérification orthographique de Microsoft ne fonctionne-t-elle pas ? Il peut y avoir plusieurs raisons pour lesquelles la vérification orthographique de Microsoft ne fonctionne pas correctement. Ces raisons incluent des paramètres de langue incompatibles, une fonction de vérification orthographique désactivée, une installation MSTeam ou MSOffice endommagée, etc. En outre, MSTeams et MSOF obsolètes

Comment vérifier si un objet est itérable en Python ? Comment vérifier si un objet est itérable en Python ? Aug 25, 2023 pm 10:05 PM

Un objet itérable est un objet dont tous les éléments peuvent être itérés à l'aide d'une boucle ou d'une fonction itérable. Les listes, chaînes, dictionnaires, tuples, etc. sont tous appelés objets itérables. En langage Python, il existe différentes manières de vérifier si un objet est itérable. Jetons un coup d'œil un par un. Utilisation des boucles En Python, nous avons deux techniques de bouclage, l'une utilise la boucle "for" et l'autre utilise la boucle "while". En utilisant l'une ou l'autre de ces deux boucles, nous pouvons vérifier si un objet donné est itérable. Exemple Dans cet exemple, nous allons essayer d'itérer un objet en utilisant la boucle "for" et vérifier s'il est itéré ou non. Ci-dessous le code. l=["pomme",22,"orange

Comment utiliser la fonction LOCATE dans MySQL pour trouver la position d'une sous-chaîne dans une chaîne Comment utiliser la fonction LOCATE dans MySQL pour trouver la position d'une sous-chaîne dans une chaîne Jul 25, 2023 am 09:45 AM

Comment utiliser la fonction LOCATE dans MySQL pour trouver la position d'une sous-chaîne dans une chaîne. Dans MySQL, de nombreuses fonctions peuvent être utilisées pour traiter des chaînes. Parmi elles, la fonction LOCATE est une fonction très utile qui peut être utilisée pour trouver la position d'une sous-chaîne dans une chaîne. La syntaxe de la fonction LOCATE est la suivante : LOCATE(substring,string,[position]) où substring est la sous-chaîne à trouver et string est la sous-chaîne à trouver.

Compter le nombre d'occurrences d'une sous-chaîne de manière récursive en Java Compter le nombre d'occurrences d'une sous-chaîne de manière récursive en Java Sep 17, 2023 pm 07:49 PM

Étant donné deux chaînes str_1 et str_2. Le but est de compter le nombre d'occurrences de la sous-chaîne str2 dans la chaîne str1 en utilisant une procédure récursive. Une fonction récursive est une fonction qui s'appelle dans sa définition. Si str1 est "Je sais que vous savez que je sais" et str2 est "savoir", le nombre d'occurrences est de -3 Comprenons à travers des exemples. Par exemple, entrez str1="TPisTPareTPamTP", str2="TP" ; sortie Countofoccurrencesofasubstringrecursi.

Comment vérifier l'état de santé du SSD sous Windows 11 ? Comment vérifier l'état de santé du SSD sur Win11 Comment vérifier l'état de santé du SSD sous Windows 11 ? Comment vérifier l'état de santé du SSD sur Win11 Feb 14, 2024 pm 08:21 PM

Comment vérifier l’état de santé du SSD sous Windows 11 ? Pour leurs vitesses de lecture, d'écriture et d'accès rapides, les SSD remplacent rapidement les disques durs, mais même s'ils sont plus fiables, vous devez toujours vérifier la santé de vos SSD sous Windows 11. Comment le faire fonctionner ? Dans ce tutoriel, l'éditeur partagera avec vous la méthode. Méthode 1 : utilisez WMIC1, utilisez la combinaison de touches Win+R, tapez wmic, puis appuyez ou cliquez sur OK. Entrez 2. Maintenant, tapez ou collez la commande suivante pour vérifier l'état de santé du SSD : diskdrivegetstatus Si vous recevez le message « Statut : OK », votre disque SSD fonctionne normalement.

La fonction strtok_r() est une fonction en langage C. Sa fonction est de diviser une chaîne en une série de sous-chaînes. La fonction strtok_r() est une fonction en langage C. Sa fonction est de diviser une chaîne en une série de sous-chaînes. Aug 26, 2023 am 09:45 AM

Cette fonction est similaire à la fonction strtok(). La seule différence clé est _r, qui est appelée fonction réentrante. Les fonctions réentrantes sont des fonctions qui peuvent être interrompues lors de l'exécution. Ce type de fonction peut être utilisé pour reprendre l'exécution. Par conséquent, les fonctions réentrantes sont thread-safe, ce qui signifie qu’elles peuvent être interrompues en toute sécurité par les threads sans causer de dommages. La fonction strtok_r() a un paramètre supplémentaire appelé contexte. De cette façon, la fonction peut être restaurée au bon endroit. La syntaxe de la fonction strtok_r() est la suivante : #include<string.h>char*strtok_r(char*string,constchar*limiter,char**

Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Mar 12, 2024 pm 09:42 PM

Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Lors de la programmation en Golang, vous rencontrez souvent des situations où vous devez vérifier si une chaîne commence par un caractère spécifique. Pour répondre à cette exigence, nous pouvons utiliser les fonctions fournies par le package strings dans Golang pour y parvenir. Ensuite, nous présenterons en détail comment utiliser Golang pour vérifier si une chaîne commence par un caractère spécifique, avec des exemples de code spécifiques. En Golang, nous pouvons utiliser HasPrefix du package strings

See all articles