


La longueur maximale de division d'une chaîne de telle sorte que chaque caractère de la chaîne apparaisse dans une sous-chaîne
Dans cet article, nous explorerons le problème de savoir comment trouver la longueur de la partition maximisée d'une chaîne avec des caractères uniques. Nous comprenons d’abord l’énoncé du problème, puis étudions des méthodes naïves et efficaces pour résoudre ce problème, y compris leurs algorithmes respectifs et leurs complexités temporelles. Enfin, nous implémenterons la solution en C++.
Énoncé du problème
À partir d'une chaîne, divisez-la en autant de sous-chaînes que possible afin que chaque caractère de la chaîne apparaisse dans une seule sous-chaîne. Renvoie la longueur de ces divisions maximisées.
Méthode naïve
L'approche naïve consiste à parcourir la chaîne, en enregistrant la dernière occurrence de chaque caractère. Ensuite, parcourez à nouveau la chaîne et créez une partition lorsque la dernière occurrence du caractère actuel est trouvée.
Algorithme (naïf)
Initialisez un tableau pour stocker la dernière occurrence de chaque caractère dans la chaîne.
Parcourez la chaîne et enregistrez la dernière occurrence de chaque caractère.
Initialisez un vecteur pour stocker la longueur de la partition.
Parcourez à nouveau la chaîne et créez des partitions lorsque la dernière occurrence du caractère actuel est trouvée.
Code C++ (simple)
La traduction chinoise deExemple
est :Exemple
#include <iostream> #include <vector> #include <string> #include <algorithm> std::vector<int> partitionLengths(std::string s) { std::vector<int> lastOccurrence(26, -1); for (size_t i = 0; i < s.size(); i++) { lastOccurrence[s[i] - 'a'] = i; } std::vector<int> partitionLengths; int start = 0, end = 0; for (size_t i = 0; i < s.size(); i++) { end = std::max(end, lastOccurrence[s[i] - 'a']); if (i == end) { partitionLengths.push_back(end - start + 1); start = i + 1; } } return partitionLengths; } int main() { std::string s = "abacdc"; std::vector<int> lengths = partitionLengths(s); std::cout << "Lengths of maximized partitions: "; for (int length : lengths) { std::cout << length << " "; } return 0; }
Sortie
Lengths of maximized partitions: 3 3
Complexité temporelle (algorithme naïf) - O(n), où n est la longueur de la chaîne.
Méthode efficace
La méthode efficace est similaire à la méthode simple, mais au lieu d'itérer la chaîne deux fois, nous pouvons créer des partitions tout en enregistrant la dernière occurrence de chaque caractère en une seule itération.
Algorithme (efficace)
Initialisez un tableau pour stocker la dernière occurrence de chaque caractère dans la chaîne.
Initialisez un vecteur pour stocker la longueur de la partition.
Parcourez la chaîne, enregistrez la dernière occurrence de chaque caractère et créez une partition lorsque la dernière occurrence du caractère actuel est trouvée.
Code C++ (efficace)
Exemple
#include <iostream> #include <vector> #include <string> #include <algorithm> std::vector<int> partitionLengths(std::string s) { std::vector<int> lastOccurrence(26, -1); std::vector<int> partitionLengths; int start = 0, end = 0; for (size_t i = 0; i < s.size(); i++) { lastOccurrence[s[i] - 'a'] = i; } for (size_t i = 0; i < s.size(); i++) { end = std::max(end, lastOccurrence[s[i] - 'a']); if (i == end) { partitionLengths.push_back(end - start + 1); start = i + 1; } } return partitionLengths; } int main() { std::string s = "abacdc"; std::vector<int> lengths = partitionLengths(s); std::cout << "Lengths of maximized partitions: "; for (int length : lengths) { std::cout << length << " "; } return 0; }
Sortie
Lengths of maximized partitions: 3 3
Complexité temporelle (efficace) - O(n), où n est la longueur de la chaîne.
Conclusion
Dans cet article, nous explorons le problème de la maximisation de la longueur de la partition pour trouver des chaînes avec des caractères uniques. Nous discutons de méthodes simples mais efficaces pour résoudre ce problème, ainsi que de leur complexité algorithmique et temporelle. Cette approche efficace combine l'enregistrement de la dernière occurrence de chaque caractère et la création de partitions en une seule itération, offrant ainsi une solution optimisée. Les deux méthodes ont la même complexité temporelle, mais la méthode efficace utilise moins d’itérations.
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Python est un langage de programmation populaire qui fournit de nombreuses fonctions intégrées pour gérer les chaînes. L'une des fonctions couramment utilisées est la fonction split(), qui peut diviser une chaîne en plusieurs sous-chaînes selon le délimiteur spécifié. Cet article explique comment utiliser la fonction split() dans Python3.x. En Python, la fonction split() est une fonction intégrée de la classe string. Sa syntaxe de base est la suivante : string.split(separator,maxsplit)

Dans cet article, nous explorerons le problème de savoir comment trouver la longueur de la partition maximisée d'une chaîne avec des caractères uniques. Nous comprenons d’abord l’énoncé du problème, puis étudions des méthodes naïves et efficaces pour résoudre ce problème, y compris leurs algorithmes respectifs et leurs complexités temporelles. Enfin, nous implémenterons la solution en C++. Énoncé du problème Étant donné une chaîne, divisez la chaîne en autant de sous-chaînes que possible afin que chaque caractère de la chaîne apparaisse dans une seule sous-chaîne. Renvoie la longueur de ces divisions maximisées. Approche naïve L'approche naïve consiste à parcourir la chaîne, en enregistrant la dernière occurrence de chaque caractère. Ensuite, parcourez à nouveau la chaîne et créez une partition lorsque la dernière occurrence du caractère actuel est trouvée. Algorithme (naïf) pour initialiser un tableau pour stocker des chaînes dans

Comment diviser une chaîne en tableau en PHP En PHP, nous devons souvent traiter des chaînes et les diviser en plusieurs parties. Diviser une chaîne en un tableau est une opération courante qui nous aide à mieux gérer les différentes parties de la chaîne. Dans cet article, nous apprendrons comment diviser une chaîne en un tableau à l'aide de fonctions en PHP et fournirons quelques exemples de code. Utilisez la fonction exploser pour diviser une chaîne en un tableau. PHP fournit une fonction appelée exploser, qui peut diviser la chaîne en fonction du délimiteur spécifié.

Dans le langage PHP, il existe de nombreuses fonctions de base qui peuvent nous aider à traiter les chaînes rapidement et efficacement. Parmi elles, la fonction d'explosion est une fonction de fractionnement de chaînes très pratique. Il peut diviser une chaîne en tableaux selon le délimiteur spécifié, puis effectuer des opérations de chaîne plus flexibles. Dans cet article, nous présenterons comment utiliser la fonction d'explosion pour diviser des chaînes en PHP. 1. Le format de la fonction éclater Le format de la fonction éclater dans le langage PHP est le suivant : éclater(sépara

Dans ce problème, nous calculerons la manière de diviser la chaîne donnée en K sous-chaînes de telle sorte qu'elle satisfasse aux conditions données dans l'énoncé du problème. Nous utiliserons la récursion pour résoudre ce problème. De plus, nous utiliserons des méthodes de programmation dynamique tabulaire pour résoudre efficacement ce problème. Énoncé du problème - Nous avons une chaîne de longueur spécifique appelée bin_Str. La chaîne contient uniquement des caractères numériques de « 0 » à « 9 ». Nous devons calculer le nombre de façons de diviser la chaîne en K sous-chaînes afin qu'elle remplisse les conditions suivantes. La sous-chaîne doit contenir au moins 2 caractères. Le premier caractère de chaque sous-chaîne doit être pair et le dernier caractère impair. ExempleExemple inputM=2,K=2;bin_str="255687&q

Il existe de nombreuses fonctions de chaîne en PHP, parmi lesquelles la fonction de fractionnement de chaîne est très couramment utilisée. La fonction string split peut diviser une chaîne en fonction du délimiteur spécifié et renvoyer un tableau. Ci-dessous, nous présenterons plusieurs fonctions de fractionnement de chaînes couramment utilisées. Fonction exploser La fonction exploser peut diviser une chaîne selon le délimiteur spécifié et renvoyer un tableau. La syntaxe est la suivante : éclater(string$separator,string$string

La méthode pour résoudre l'erreur signalée par la fonction d'explosion en PHP nécessite des exemples de code spécifiques. En PHP, la fonction d'explosion est une fonction utilisée pour diviser une chaîne en un tableau selon le délimiteur spécifié. Cependant, une erreur se produit parfois lors de l'utilisation de la fonction d'éclatement, principalement parce que les paramètres transmis ne répondent pas aux exigences de la fonction. Ci-dessous, nous discuterons en détail des problèmes et des solutions possibles, et fournirons des exemples de code spécifiques. Erreur causée par un nombre incorrect de paramètres lors de l'utilisation de la fonction d'éclatement

Dans ce problème, nous devons diviser la chaîne donnée de telle sorte 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 ne peut être une sous-chaîne des deux premières chaînes que 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 dont la fréquence est supérieure à 3 dans la chaîne donnée, 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. Selon que 3 sous-chaînes peuvent être trouvées, écrivez "oui" ou "non"
