


Die maximale Teilungslänge einer Zeichenfolge, sodass jedes Zeichen in der Zeichenfolge in einer Teilzeichenfolge erscheint
在本文中,我们将探讨如何找到具有唯一字符的字符串的最大化分区的长度问题。我们首先了解问题陈述,然后研究解决这个问题的朴素和高效方法,包括它们各自的算法和时间复杂度。最后,我们将在C++中实现解决方案。
问题陈述
给定一个字符串,将字符串分割为尽可能多的子字符串,使得字符串中的每个字符只出现在一个子字符串中。返回这些最大化分割的长度。
天真的方法
天真的方法是通过字符串迭代,记录每个字符的最后出现位置。然后,再次迭代字符串,并在找到当前字符的最后出现位置时创建分区。
算法(朴素)
初始化一个数组以存储字符串中每个字符的最后出现位置。
遍历字符串并记录每个字符的最后出现。
初始化一个向量来存储分区的长度。
再次遍历字符串,并在找到当前字符的最后出现时创建分区。
C++ 代码(朴素)
Example
的中文翻译为:示例
#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; }
输出
Lengths of maximized partitions: 3 3
时间复杂度(朴素算法) - O(n),其中n是字符串的长度。
高效的方法
高效的方法类似于简单的方法,但我们可以创建分区,同时记录单次迭代中每个字符的最后一次出现,而不是迭代字符串两次。
算法(高效)
初始化一个数组以存储字符串中每个字符的最后出现位置。
初始化一个向量来存储分区的长度。
遍历字符串,记录每个字符的最后出现位置,并在找到当前字符的最后出现位置时创建分区。
C++代码(高效)
示例
#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; }
输出
Lengths of maximized partitions: 3 3
时间复杂度(高效) - O(n),其中 n 是字符串的长度。
结论
在本文中,我们探讨了查找具有唯一字符的字符串的最大化分区长度的问题。我们讨论了解决这个问题的简单而有效的方法,以及它们的算法和时间复杂度。这种有效的方法结合了记录每个字符的最后一次出现和在单次迭代中创建分区,提供了优化的解决方案。两种方法具有相同的时间复杂度,但有效的方法使用更少的迭代。
Das obige ist der detaillierte Inhalt vonDie maximale Teilungslänge einer Zeichenfolge, sodass jedes Zeichen in der Zeichenfolge in einer Teilzeichenfolge erscheint. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Python ist eine beliebte Programmiersprache, die viele integrierte Funktionen zur Verarbeitung von Zeichenfolgen bietet. Eine der am häufigsten verwendeten Funktionen ist die Funktion split(), die eine Zeichenfolge entsprechend dem angegebenen Trennzeichen in mehrere Teilzeichenfolgen aufteilen kann. In diesem Artikel wird die Verwendung der Funktion split() in Python3.x vorgestellt. In Python ist die Funktion split() eine integrierte Funktion der String-Klasse. Ihre grundlegende Syntax lautet wie folgt: string.split(separator,maxsplit).

In diesem Artikel untersuchen wir das Problem, wie man die Länge der maximierenden Partition einer Zeichenfolge mit eindeutigen Zeichen ermittelt. Wir verstehen zunächst die Problemstellung und untersuchen dann naive und effiziente Methoden zur Lösung dieses Problems, einschließlich ihrer jeweiligen Algorithmen und zeitlichen Komplexität. Abschließend werden wir die Lösung in C++ implementieren. Problemstellung: Teilen Sie eine gegebene Zeichenfolge in so viele Teilzeichenfolgen wie möglich auf, sodass jedes Zeichen in der Zeichenfolge nur in einer Teilzeichenfolge erscheint. Gibt die Länge dieser maximierenden Teilungen zurück. Naiver Ansatz Der naive Ansatz besteht darin, die Zeichenfolge zu durchlaufen und das letzte Vorkommen jedes Zeichens aufzuzeichnen. Anschließend wird die Zeichenfolge erneut durchlaufen und eine Partition erstellt, wenn das letzte Vorkommen des aktuellen Zeichens gefunden wird. Algorithmus (naiv) zum Initialisieren eines Arrays zum Speichern von Zeichenfolgen

So teilen Sie Zeichenfolgen in PHP in Arrays auf. In PHP müssen wir häufig Zeichenfolgen verarbeiten und in mehrere Teile aufteilen. Das Aufteilen einer Zeichenfolge in ein Array ist eine gängige Operation, die uns hilft, die verschiedenen Teile der Zeichenfolge besser zu verarbeiten. In diesem Artikel erfahren Sie, wie Sie mit Funktionen in PHP einen String in ein Array aufteilen und stellen einige Codebeispiele bereit. Verwenden Sie die Explosionsfunktion, um eine Zeichenfolge in ein Array aufzuteilen. PHP bietet eine Funktion namens Explosion, die die Zeichenfolge entsprechend dem angegebenen Trennzeichen aufteilen kann.

In der PHP-Sprache gibt es viele Grundfunktionen, die uns helfen können, Strings schnell und effizient zu verarbeiten. Unter diesen ist die Explosionsfunktion eine sehr praktische Funktion zum Aufteilen von Zeichenfolgen. Es kann eine Zeichenfolge gemäß dem angegebenen Trennzeichen in Arrays aufteilen und dann flexiblere Zeichenfolgenoperationen ausführen. In diesem Artikel stellen wir vor, wie Sie die Explosionsfunktion zum Teilen von Zeichenfolgen in PHP verwenden. 1. Das Format der Explosionsfunktion in der PHP-Sprache ist wie folgt: explosion(separa

In diesem Problem berechnen wir die Art und Weise, wie wir die gegebene Zeichenfolge in K Teilzeichenfolgen aufteilen, sodass sie die in der Problemstellung angegebenen Bedingungen erfüllt. Wir werden Rekursion verwenden, um dieses Problem zu lösen. Darüber hinaus werden wir tabellarische dynamische Programmiermethoden verwenden, um dieses Problem effizient zu lösen. Problem Statement - Wir haben eine Zeichenfolge mit einer bestimmten Länge namens bin_Str. Die Zeichenfolge enthält nur numerische Zeichen von „0“ bis „9“. Wir müssen die Anzahl der Möglichkeiten berechnen, die Zeichenfolge in K Teilzeichenfolgen aufzuteilen, damit sie die folgenden Bedingungen erfüllt. Der Teilstring sollte mindestens 2 Zeichen enthalten. Das erste Zeichen jeder Teilzeichenfolge sollte gerade und das letzte Zeichen ungerade sein. BeispielBeispieleingabeM=2,K=2;bin_str="255687&q

Es gibt viele String-Funktionen in PHP, unter denen die String-Aufteilungsfunktion sehr häufig verwendet wird. Die String-Split-Funktion kann einen String entsprechend dem angegebenen Trennzeichen teilen und ein Array zurückgeben. Im Folgenden stellen wir einige häufig verwendete Funktionen zum Aufteilen von Zeichenfolgen vor. Explosionsfunktion Die Explosionsfunktion kann eine Zeichenfolge gemäß dem angegebenen Trennzeichen aufteilen und ein Array zurückgeben. Die Syntax lautet wie folgt: explosion(string$separator,string$string

Die Methode zum Beheben des von der Explosionsfunktion in PHP gemeldeten Fehlers erfordert spezifische Codebeispiele. In PHP ist die Explosionsfunktion eine Funktion, die zum Aufteilen einer Zeichenfolge in ein Array gemäß dem angegebenen Trennzeichen verwendet wird. Bei der Verwendung der Explosionsfunktion tritt jedoch manchmal ein Fehler auf, hauptsächlich weil die übergebenen Parameter nicht den Anforderungen der Funktion entsprechen. Im Folgenden werden mögliche Probleme und Lösungen im Detail besprochen und konkrete Codebeispiele bereitgestellt. Fehler durch falsche Parameteranzahl bei Verwendung der Explosionsfunktion

Bei diesem Problem müssen wir die gegebene Zeichenfolge so aufteilen, dass die dritte Teilzeichenfolge eine Teilzeichenfolge der ersten beiden Teilzeichenfolgen sein kann. Überlegen wir uns eine Lösung. Die dritte Zeichenfolge kann nur dann eine Teilzeichenfolge der ersten beiden Zeichenfolgen sein, wenn die ersten beiden Zeichenfolgen alle Zeichen der dritten Zeichenfolge enthalten. Wir müssen also mindestens ein Zeichen mit einer Häufigkeit von mehr als 3 in der angegebenen Zeichenfolge finden und können die dritte Teilzeichenfolge dieses einzelnen Zeichens verwenden. Problemstellung: Wir erhalten eine Zeichenfolge str mit N kleingeschriebenen Buchstaben. Wir müssen prüfen, ob wir die Zeichenfolge in drei Teilzeichenfolgen a, b und c aufteilen können, sodass Teilzeichenfolge c eine Teilzeichenfolge von a und b ist. Geben Sie je nachdem, ob 3 Teilzeichenfolgen gefunden werden können, „ja“ oder „nein“ aus
