Table des matières
Syntaxe
Algorithme
Méthode 1 : Méthode traversante
Exemple
Sortie
Explication
Méthode 2 : Fenêtre coulissante
Conclusion
Maison développement back-end C++ Maximiser le nombre de caractères minoritaires pouvant être supprimés d'une sous-chaîne de chaîne binaire donnée, implémenté en C++

Maximiser le nombre de caractères minoritaires pouvant être supprimés d'une sous-chaîne de chaîne binaire donnée, implémenté en C++

Aug 31, 2023 am 09:33 AM
chaîne binaire c implémentation Maximiser le nombre de suppressions

Maximiser le nombre de caractères minoritaires pouvant être supprimés dune sous-chaîne de chaîne binaire donnée, implémenté en C++

Notre objectif actuel consiste à maximiser le nombre par lequel nous pouvons supprimer toutes les occurrences contenant le ou les caractères minoritaires dans une section entièrement composée de « 0 » ou de « 1 ». L'objectif final est simplement d'atteindre le maximum de suppressions possibles. tout en respectant toutes les règles et contraintes données.

Syntaxe

Pour assurer une compréhension globale des codes à venir, familiarisons-nous d'abord avec la syntaxe de la méthode qui sera utilisée avant d'explorer l'algorithme et les stratégies −

int maximizeDeletions(string binaryString, int startIndex, int endIndex)
Copier après la connexion

Algorithme

L'algorithme qui maximise la suppression de quelques caractères dans une sous-chaîne de chaîne binaire donnée peut être décrit par les étapes suivantes :

  • Tout d’abord, commençons par initialiser une variable appelée suppressions à zéro. L'objectif principal de cette variable est de surveiller le nombre d'opérations de suppression effectuées.

  • Déterminez la fréquence à laquelle les chiffres « 0 » et « 1 » apparaissent dans une sous-chaîne spécifique d'une chaîne binaire. Chaque occurrence de ces nombres peut être calculée séparément.

  • Pour identifier le(s) personnage(s) minoritaire(s), il faut se référer aux décomptes obtenus à l'étape précédente.

  • Supprimez tous les caractères avec moins d'occurrences de la sous-chaîne et mettez à jour le nombre de suppressions en conséquence.

  • Renvoyer la valeur finale supprimée comme résultat

Méthode 1 : Méthode traversante

L'exécution de notre approche consiste à parcourir la sous-chaîne de chaînes binaires de manière linéaire, puis à supprimer le(s) caractère(s) minoritaire(s) d'un seul coup.

La traduction chinoise de

Exemple

est :

Exemple

#include <iostream>
#include <algorithm>
using namespace std;

int maximizeDeletionsLinear(string binaryString, int startIndex, int endIndex) {
   int countZero = 0;
   int countOne = 0;

   for (int i = startIndex; i <= endIndex; i++) {
      if (binaryString[i] == '0') {
         countZero++;
      } else {
         countOne++;
      }
   }

   int deletions = endIndex - startIndex + 1 - min(countZero, countOne);
   return deletions;
}

int main() {
   string binaryString;
   int startIndex, endIndex;

   cout << "Enter the binary string: ";
   cin >> binaryString;
   cout << "Enter the start index: ";
   cin >> startIndex;
   cout << "Enter the end index: ";
   cin >> endIndex;

   int deletions = maximizeDeletionsLinear(binaryString, startIndex, endIndex);
   cout << "Maximum deletions: " << deletions << endl;
   
   return 0;
}
Copier après la connexion

Sortie

Enter the binary string: 1011010011
Enter the start index: 2
Enter the end index: 8
Maximum deletions: 2
Copier après la connexion

Explication

Dans la méthode 1, nous utilisons le parcours linéaire pour maximiser le nombre de quelques caractères supprimés d'une sous-chaîne de chaîne binaire donnée. En parcourant la sous-chaîne spécifiée, nous pouvons déterminer le nombre d'occurrences de « 0 » et « 1 » pour chaque instance de cette section. Après avoir identifié les caractères les moins fréquents dans cette région ou ce groupe (c'est-à-dire avoir trouvé la « minorité »), nous pouvons calculer le nombre de suppressions possibles en soustrayant leurs comptes respectifs du nombre de tous les caractères dans cette région spécifiée.

Cela conduit à une méthode efficace qui révèle une solution simple mais pratique - ne nécessitant qu'un seul passage sur notre chaîne initiale - ce qui rend cette méthode particulièrement adaptée aux chaînes d'entrée plus courtes.

Méthode 2 : Fenêtre coulissante

La technique de la fenêtre coulissante est une autre approche efficace pour résoudre ce problème. Elle consiste à utiliser une fenêtre de taille fixe pour parcourir la sous-chaîne de la chaîne binaire

. La traduction chinoise de

Exemple

est :

Exemple

#include <iostream>
#include <algorithm>
using namespace std;

int maximizeDeletionsSlidingWindow(string binaryString, int startIndex, int endIndex) {
   int left = startIndex;
   int right = startIndex;
   int countZero = 0;
   int countOne = 0;
   int deletions = 0;

   while (right <= endIndex) {
      if (binaryString[right] == '0') {
         countZero++;
      } else {
         countOne++;
      }

      while (min(countZero, countOne) > 0) {
         if (binaryString[left] == '0') {
            countZero--;
         } else {
            countOne--;
         }
         left++;
      }

      deletions = max(deletions, right - left + 1);
      right++;
   }

   return deletions;
}

int main() {
   string binaryString;
   int startIndex, endIndex;

   cout << "Enter the binary string: ";
   cin >> binaryString;
   cout << "Enter the start index: ";
   cin >> startIndex;
   cout << "Enter the end index: ";
   cin >> endIndex;

   int deletions = maximizeDeletionsSlidingWindow(binaryString, startIndex, endIndex);
   cout << "Maximum deletions: " << deletions << endl;

   return 0;
}
Copier après la connexion

Sortie

Enter the binary string: Enter the start index: Enter the end index: Maximum deletions: 0
Copier après la connexion

Explication

La méthode 2 consiste à utiliser des techniques de fenêtre coulissante pour maximiser la suppression d'un petit nombre de caractères. En utilisant une fenêtre de taille fixe, nous parcourons la sous-chaîne, mettant à jour le nombre de « 0 » et de « 1 » à mesure que la fenêtre se déplace. En ajustant les limites de la fenêtre en fonction du nombre, nous identifions un petit nombre de caractères et calculons le nombre maximum de suppressions possibles. Cette approche réduit le nombre de calculs redondants en faisant glisser efficacement la fenêtre, la rendant plus adaptée aux entrées plus volumineuses et fournissant des solutions plus rapides.

Conclusion

Dans cet article, nous explorons le problème de savoir comment maximiser la suppression d'un petit nombre de caractères d'une sous-chaîne de chaîne binaire donnée. Nous avons discuté de deux approches : la technique du parcours linéaire et de la fenêtre glissante. Les deux méthodes fournissent des solutions efficaces pour obtenir les résultats souhaités. En comprenant les algorithmes et en étudiant les exemples de code exécutable fournis, vous pouvez appliquer ces concepts pour résoudre des problèmes similaires dans vos propres projets. N'oubliez pas d'analyser le problème, de choisir l'approche la plus appropriée et de la mettre en œuvre en conséquence.

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)

Sous-séquence non croissante la plus longue dans une chaîne binaire Sous-séquence non croissante la plus longue dans une chaîne binaire Sep 07, 2023 pm 11:13 PM

Dans ce problème, nous devons trouver la sous-séquence non croissante la plus longue d’une chaîne donnée. Non croissant signifie que les caractères sont identiques ou classés par ordre décroissant. Étant donné que les chaînes binaires ne contiennent que « 0 » et « 1 », la chaîne résultante doit soit commencer par « 1 » et se terminer par « 0 », soit commencer et se terminer par « 0 » ou « 1 ». Pour résoudre ce problème, nous allons compter le préfixe « 1 » et le suffixe « 0 » à chaque position de la chaîne et trouver la somme maximale du préfixe « 1 » et du suffixe « 0 ». Énoncé du problème - On nous donne une chaîne binaire str. Nous devons trouver la sous-séquence non croissante la plus longue de la chaîne donnée. Exemple Input–str="010100"Output–4 illustre le plus long fichier non récursif

En PHP, la fonction pack() a pour fonction de convertir les données en chaîne binaire En PHP, la fonction pack() a pour fonction de convertir les données en chaîne binaire Aug 31, 2023 pm 02:05 PM

La fonction pack() regroupe les données dans une chaîne binaire. Syntaxe pack(format,args) Format des paramètres - le format à utiliser. Voici les valeurs possibles - a - chaîne remplie NUL A - chaîne remplie d'espaces h - chaîne hexadécimale, petit quartet en premier H - chaîne hexadécimale, haut quartet en premier c - caractère signé C - caractère non signé s - court signé (toujours 16 bits , ordre des octets machine) S - court non signé (toujours 16 bits, ordre des octets machine) n - court non signé (toujours 16 bits, ordre des octets big endian) v - court non signé (toujours 16 bits, ordre des octets small endian) i - entier signé (dépend de la taille de la machine et de l'ordre des octets) I - Aucun entier signé (en fonction de

Écrit en C++, trouvez le nombre de permutations uniques d'une chaîne binaire commençant par 1 Écrit en C++, trouvez le nombre de permutations uniques d'une chaîne binaire commençant par 1 Sep 05, 2023 am 09:01 AM

Dans le problème donné, on nous donne une chaîne composée de 0 et 1 ; nous devons trouver le nombre total de toutes les permutations commençant par 1. Puisque la réponse peut être un nombre énorme, nous la prenons modulo 1000000007 et la produisons. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Nous allons résoudre ce problème en appliquant des mathématiques combinatoires et en mettant en place des formules. Méthode de solution Dans cette méthode, nous compterons le nombre de 0 et de 1. Supposons maintenant que n soit le nombre de 1 qui apparaissent dans notre chaîne et que m soit le nombre de 0 qui apparaissent dans notre chaîne.

Implémentation C++ de l'algorithme de génération de ligne médiane Implémentation C++ de l'algorithme de génération de ligne médiane Sep 09, 2023 pm 07:49 PM

Une ligne relie deux points. C'est un élément de base en graphisme. Pour tracer une ligne il vous faut deux points et vous tracez une ligne entre ces deux points sur l'écran, en terme de graphisme on appelle ces points pixels et chaque pixel est associé à une coordonnée entière. On donne des coordonnées entières sous la forme (x1,y1) et (x2,y2) où x1

Problème producteur-consommateur et son implémentation en C++ Problème producteur-consommateur et son implémentation en C++ Sep 17, 2023 pm 11:09 PM

Un défi de synchronisation courant dans l’informatique simultanée est connu sous le nom de problème producteur-consommateur. Étant donné que plusieurs threads ou processus sont conçus pour coordonner leurs opérations lors de l'accès à une source partagée, ce problème nécessite des tâches de communication complexes ainsi qu'une exécution équilibrée. La discussion d'aujourd'hui aidera à comprendre les concepts derrière cette difficulté, tout en reconnaissant son importance dans les cadres informatiques contemporains - en particulier dans la pratique de la mise en œuvre du C++. Comprendre la définition et l'objectif du problème producteur-consommateur Les solutions aux défis posés par le problème producteur-consommateur proviennent d'une démarcation claire des responsabilités entre ceux qui sont responsables de la production et de l'utilisation de l'information. Lorsque les producteurs génèrent eux-mêmes de nouveaux enregistrements, les consommateurs s’assurent qu’ils sont utilisés correctement en synchronisant leurs opérations. Il faut faire attention à éviter les problèmes tels que les conditions de concurrence ou les blocages, par ex.

Vérifie si une chaîne peut former une chaîne palindrome en échangeant des paires de caractères au niveau des indices avec des caractères inégaux dans une chaîne binaire Vérifie si une chaîne peut former une chaîne palindrome en échangeant des paires de caractères au niveau des indices avec des caractères inégaux dans une chaîne binaire Sep 02, 2023 pm 08:09 PM

Énoncé du problème Nous avons une chaîne str et une chaîne binaire B. La longueur des deux chaînes est égale à N. Nous devons vérifier si nous pouvons faire de la chaîne str une chaîne palindrome en échangeant ses caractères plusieurs fois sur n'importe quelle paire d'index contenant des caractères inégaux dans la chaîne B. Exemple Exemple Entrée str='AAS' B='101' Sortie 'YES' La traduction chinoise de Explication est : Explication Nous pouvons échanger str[1] et str[2] car B[1] et B[2] ne sont pas égaux . La chaîne finale peut être « ASA ». Entrée str='AASS' B='1111' et sortie 'No'. La traduction chinoise de l'explication est : Explication que nous ne pouvons pas créer le palindrome de chaîne,

Trouver le joueur avec le moins de zéros après avoir vidé une chaîne binaire (en supprimant les sous-chaînes non vides) Trouver le joueur avec le moins de zéros après avoir vidé une chaîne binaire (en supprimant les sous-chaînes non vides) Sep 16, 2023 am 10:21 AM

Dans cet article, nous aborderons un problème intéressant lié au domaine de la manipulation de chaînes et de la théorie des jeux : "Vider une chaîne binaire en supprimant les sous-chaînes non vides et trouver le joueur avec le moins de zéros restants". Cette question explore le concept d'utilisation de chaînes binaires pour les jeux compétitifs. Notre objectif est de trouver le joueur avec le moins de 0 restant à la fin de la partie. Nous discuterons de ce problème, fournirons une implémentation de code C++ et expliquerons le concept à travers un exemple. Comprendre l'énoncé du problème Deux joueurs reçoivent une chaîne binaire et jouent à tour de rôle. A chaque tour, le joueur supprime les sous-chaînes non vides contenant au moins un "1". Le jeu se termine lorsque la chaîne devient vide ou qu'il n'y a pas de "1" dans la chaîne. Les joueurs incapables d’agir perdent la partie. La tâche est de trouver le 0 final

Calculer des chaînes binaires de longueur N qui sont des concaténations répétées de sous-chaînes Calculer des chaînes binaires de longueur N qui sont des concaténations répétées de sous-chaînes Sep 07, 2023 am 10:13 AM

Le but de cet article est d'implémenter un programme permettant de compter le nombre de chaînes binaires de longueur N formées par concaténation répétée d'une sous-chaîne. L'objectif est de déterminer combien de chaînes binaires de longueur N peuvent être créées en concaténant de manière répétée des sous-chaînes individuelles du texte donné, où N est un entier positif. Énoncé du problème Implémentez un programme qui compte le nombre de chaînes binaires de longueur N qui concatènent à plusieurs reprises des sous-chaînes. Exemple Exemple 1 Prenons l'entrée, N = 3 Sortie : 2 La traduction chinoise de l'explication est : Explication La liste suivante répertorie les chaînes binaires réalisables de longueur N = 3, dans lesquelles une sous-chaîne est concaténée de manière répétée. "000":Lasubstr

See all articles