Table des matières
Méthode 1 : Utiliser Hashmap
Exemple
Sortie
Complexité temporelle et spatiale
Conclusion
Maison développement back-end C++ Vérifie si la chaîne donnée ne peut être divisée qu'en sous-séquences de ABC

Vérifie si la chaîne donnée ne peut être divisée qu'en sous-séquences de ABC

Sep 06, 2023 pm 05:01 PM
检查 字符串拆分 commande enfant

Vérifie si la chaîne donnée ne peut être divisée quen sous-séquences de ABC

Une sous-séquence d'une chaîne est une partie d'une chaîne où des caractères peuvent être extraits de n'importe quelle position (zéro ou plusieurs éléments) de la chaîne sans changer l'ordre des caractères et former une nouvelle chaîne. Dans ce problème, nous recevons une chaîne de longueur N où chaque caractère de la chaîne est soit un caractère « A », « B » ou « C ». Notre tâche est de constater que la chaîne ne peut être divisée qu'en sous-séquences « ABC » ou « Not ». Renvoie "oui" si la chaîne est uniquement divisée en sous-séquence "ABC", sinon renvoie "non".

Input 1: str = “AABCBC” 
Output 1: yes
Copier après la connexion

Instructions - La méthode de fractionnement consiste à diviser la chaîne en 2 sous-séquences de "ABC", comme suit -

  • Une des méthodes possibles est de former la sous-séquence "ABC" en prenant les caractères d'index 0, 2 et 3, puis de former la sous-séquence "ABC" en prenant les caractères d'index 1, 4 et 5.

  • Une autre manière possible est de former la sous-séquence "ABC" en récupérant les caractères aux index 0, 4, 5 et 1, 2, 3.

Ainsi, la chaîne peut être divisée en 2 sous-séquences de « ABC ».

Input 2: str = “AABBBACCC”
Output 2: no
Copier après la connexion

Explication - Pour « A » apparaissant au numéro d'index 5, il n'y a pas de « B » après. Par conséquent, la chaîne entière ne peut pas être divisée en une sous-séquence unique « ABC ». La réponse est donc « non ».

Méthode 1 : Utiliser Hashmap

Nous avons deux observations comme suit -

  • La taille de la chaîne doit être divisible par 3 car nous devons diviser la chaîne en « ABC » et le nombre de caractères « A », « B » et « C » doit être égal. Sinon, nous ne pouvons pas remplir les conditions.

  • Lorsque nous comptons les fréquences des caractères « A », « B » et « C », le nombre de « A » doit être supérieur ou égal au nombre de « B » et le nombre de « B » doit être supérieur ou égal au nombre de « C ». Parce que le nombre de A >= le nombre de B >= le nombre de C

Sur la base des observations ci-dessus, nous avons trois conditions à vérifier.

  • doit être une taille de chaîne % 3 == 0.

  • devrait être le nombre de A >= le nombre de B >= le nombre de C.

  • La dernière condition doit être freq[ 'A' ] == freq[ 'B' ] == freq[ 'C' ] .

Nous pouvons utiliser une carte de hachage pour résoudre ce problème car nous devons stocker la fréquence de chaque caractère dans la chaîne donnée "str".

Discutons de la méthode ci-dessous étape par étape-

  • Tout d'abord, nous allons créer une fonction appelée "checkSubsequences" qui prendra la chaîne donnée "str" ​​​​comme paramètre et renverra la chaîne requise "yes" si possible, sinon elle renverra " no " comme valeur de retour.

  • Dans la fonction, toutes les étapes sont données ci-dessous -

  • Créez la variable "len" pour stocker la longueur de la chaîne.

  • Vérifiez la première condition et renvoyez 'non' si la longueur n'est pas divisible par 3.

  • Créez une carte de hachage pour stocker les fréquences des caractères « A », « B » et « C ». La complexité spatiale est donc constante.

  • Utilisez une boucle for pour parcourir la chaîne de 0 à moins que len.

    • Augmente le nombre actuel de caractères de la chaîne

    • Vérifiez la deuxième condition et renvoyez « Non » si le nombre de « A » est inférieur au nombre de « B » ou si le nombre de « B » est inférieur au nombre de « C ».

  • Après la boucle for, nous devons vérifier la dernière troisième condition et renvoyer "Non" si le nombre de A n'est pas égal au nombre de B ou si le nombre de B n'est pas égal au nombre de C.

  • Enfin, lorsque toutes les conditions sont remplies, répondez « oui ».

Exemple

#include <bits/stdc++.h>
using namespace std;
// function to check subsequences of "ABC"
string checkSubsequences( string str ){
   int len = str.size(); //getting length of the string str
   // check first condition 
   if( len%3 != 0 ) {
      return "no";
   }
   map< char, int >freq; //store the count of character 'A', 'B' and 'C'
   for( int i=0; i<len; i++){
      freq[ str[i] ]++; // increase the count of the character
      //chech second condition 
      if(freq[ 'A' ] < freq[ 'B' ] || freq[ 'B' ] < freq[ 'C' ]){
         return "no";
      }
   }
   //check third condition 
   if(freq[ 'A' ] != freq[ 'B' ] || freq[ 'B' ] != freq[ 'C' ]){
      return "no";
   }
   // it is possible to split string only into subsequences of "ABC"
   return "yes";
}
// main function 
int main(){
   string str = "ABAAABCBC";// given string 
   // calling the function 'checkSubsequences' to check is it possible to split
   // string into subsequences of "ABC"
   string result = checkSubsequences( str );
   if( result == "yes" ){
      cout<< result << ", the string is splited only into the subsequences of ABC";
   }
   else {
      cout<< result << ", the string is not splited only into the subsequences of ABC.";
   }
   return 0;
}
Copier après la connexion

Sortie

no, the string is not splited only into the subsequences of ABC.
Copier après la connexion

Complexité temporelle et spatiale

La complexité temporelle du code ci-dessus est O(N) car nous parcourons la chaîne. où N est la taille de la chaîne.

La complexité spatiale du code ci-dessus est O(1) car nous stockons la fréquence du nombre, dont la taille est constante 3.

Conclusion

Dans ce tutoriel, nous avons implémenté un programme pour vérifier si une chaîne donnée peut être divisée uniquement en sous-séquences ABC. Nous avons mis en place une méthode de hachage car nous devions stocker les fréquences. Dans cette méthode, nous vérifions principalement trois conditions, si toutes les conditions sont remplies, cela signifie que nous ne pouvons diviser la chaîne qu'en sous-séquences de "ABC".

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 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

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.

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

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 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.

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

Comment vérifier si ArrayList contient un certain élément en Java ? Comment vérifier si ArrayList contient un certain élément en Java ? Sep 03, 2023 pm 04:09 PM

Vous pouvez utiliser la méthode contain() de l'interface List pour vérifier si un objet existe dans la liste. Méthode contain() booleancontains(Objecto) Renvoie true si cette liste contient l'élément spécifié. Plus formellement, renvoie vrai si et seulement si cette liste contient au moins un élément e tel que (o==null?e==null:o.equals(e)). Paramètre c - l'élément dont la présence dans cette liste doit être testée. Valeur de retour Renvoie vrai si cette liste contient l'élément spécifié. Lève ClassCastException - si le type de l'élément spécifié est incompatible avec cette liste (facultatif). NulP

Programme Java utilisé pour vérifier si les étudiants du TPP sont éligibles aux entretiens Programme Java utilisé pour vérifier si les étudiants du TPP sont éligibles aux entretiens Sep 06, 2023 pm 10:33 PM

Veuillez consulter le tableau ci-dessous pour connaître les critères d'éligibilité des différentes entreprises - La traduction chinoise de CGPA est : GPA supérieur ou égal à 8 entreprises éligibles Google, Microsoft, Amazon, Dell, Intel, Wipro supérieur ou égal à 7 points de didacticiel, Accenture, Infosys, Emicon, Rellins supérieur ou égal à 6rtCamp, Cybertech, Skybags, Killer, Raymond supérieur ou égal à 5Patronics, Shoes, NoBrokers Entrons dans le programme Java pour vérifier l'éligibilité des étudiants tpp à un entretien. Méthode 1 : Utilisation de la condition ifelseif Normalement, lorsque nous devons vérifier plusieurs conditions, nous utilisons

Ecrire un programme en C pour vérifier si une année donnée est bissextile ou non Ecrire un programme en C pour vérifier si une année donnée est bissextile ou non Sep 20, 2023 pm 03:33 PM

Une année bissextile compte 366 jours, tandis qu'une année ordinaire compte 365 jours. La tâche consiste à vérifier si une année donnée est une année bissextile grâce à un programme. La logique du jugement peut être mise en œuvre en vérifiant si l'année est divisible par 400 ou par 4, mais si elle n'est pas divisible par ces deux nombres, c'est une année ordinaire. ExempleInput-:year=2000Output-:2000isaLeapYearInput-:year=101Output-:101isnotaAlgorithme d'année bissextileStartStep1-&gt;declarefunctionbooltocheckifyearifaleapyearornotboolcheck(intye

See all articles