Inhaltsverzeichnis
问题陈述
天真的方法
算法(朴素)
C++ 代码(朴素)
Example
示例
输出
高效的方法
算法(高效)
C++代码(高效)
结论
Heim Backend-Entwicklung C++ Die maximale Teilungslänge einer Zeichenfolge, sodass jedes Zeichen in der Zeichenfolge in einer Teilzeichenfolge erscheint

Die maximale Teilungslänge einer Zeichenfolge, sodass jedes Zeichen in der Zeichenfolge in einer Teilzeichenfolge erscheint

Aug 25, 2023 pm 02:41 PM
字符串分割 字符全出现 最大长度

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;
}
Nach dem Login kopieren

输出

Lengths of maximized partitions: 3 3 
Nach dem Login kopieren
Nach dem Login kopieren

时间复杂度(朴素算法) - 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;
}
Nach dem Login kopieren

输出

Lengths of maximized partitions: 3 3 
Nach dem Login kopieren
Nach dem Login kopieren

时间复杂度(高效) - 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie die Funktion split() in Python 3.x, um eine Zeichenfolge entsprechend dem angegebenen Trennzeichen aufzuteilen So verwenden Sie die Funktion split() in Python 3.x, um eine Zeichenfolge entsprechend dem angegebenen Trennzeichen aufzuteilen Jul 31, 2023 pm 08:33 PM

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

Die maximale Teilungslänge einer Zeichenfolge, sodass jedes Zeichen in der Zeichenfolge in einer Teilzeichenfolge erscheint Die maximale Teilungslänge einer Zeichenfolge, sodass jedes Zeichen in der Zeichenfolge in einer Teilzeichenfolge erscheint Aug 25, 2023 pm 02:41 PM

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 einen String in PHP in ein Array auf So teilen Sie einen String in PHP in ein Array auf Jul 08, 2023 pm 01:49 PM

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.

So verwenden Sie die Explosionsfunktion, um eine Zeichenfolge in PHP zu teilen So verwenden Sie die Explosionsfunktion, um eine Zeichenfolge in PHP zu teilen Jun 26, 2023 pm 12:03 PM

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

Zählen Sie die Anzahl der Möglichkeiten, eine Zeichenfolge in K Teilzeichenfolgen aufzuteilen, beginnend mit einer geraden Zahl und einer Mindestlänge von M Zählen Sie die Anzahl der Möglichkeiten, eine Zeichenfolge in K Teilzeichenfolgen aufzuteilen, beginnend mit einer geraden Zahl und einer Mindestlänge von M Sep 09, 2023 pm 02:01 PM

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

Beispiel für eine PHP-String-Funktion: String-Aufteilung Beispiel für eine PHP-String-Funktion: String-Aufteilung Jun 20, 2023 pm 01:58 PM

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

So beheben Sie den von der Explosionsfunktion in PHP gemeldeten Fehler So beheben Sie den von der Explosionsfunktion in PHP gemeldeten Fehler Mar 11, 2024 am 11:45 AM

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

Prüft, ob ein String in drei Teilstrings aufgeteilt werden kann, wobei ein Teilstring ein Teilstring der anderen beiden Teilstrings ist Prüft, ob ein String in drei Teilstrings aufgeteilt werden kann, wobei ein Teilstring ein Teilstring der anderen beiden Teilstrings ist Sep 22, 2023 am 11:53 AM

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

See all articles