


Die längste Teilsequenz, deren Zeichen mit der Teilzeichenfolge identisch sind und deren Häufigkeitsunterschied höchstens K beträgt
In diesem Problem ermitteln wir die maximale Länge der Teilsequenz so, dass sie aufeinanderfolgende Zeichen enthält und der Häufigkeitsunterschied aller Zeichen K nicht überschreitet.
Wir müssen alle möglichen Teilsequenzen einer bestimmten Zeichenfolge finden und prüfen, ob sie alle Zeichen nacheinander und mit maximalem Häufigkeitsunterschied enthält, um die Ausgabe zu erhalten.
Problemstellung- Wir erhalten eine Zeichenfolge alpha, die Kleinbuchstaben enthält. Zusätzlich wurde uns eine positive ganze Zahl K gegeben. Wir müssen die maximale Länge einer Teilsequenz einer bestimmten Zeichenfolge ermitteln, damit sie den folgenden Regeln folgt.
Alle Vorkommen eines bestimmten Zeichens sollten aufeinanderfolgend sein.
Der Unterschied in der Zeichenhäufigkeit darf nicht größer als K sein.
Beispiel
Eintreten
alpha = "ppppqrs", K = 2
Ausgabe
6
Erklärung – Wir können die Teilsequenz „pppqrs“ verwenden. Die maximale Zeichenhäufigkeit beträgt 3 und die minimale Zeichenhäufigkeit beträgt 1. Daher beträgt die Differenz 2. Und es enthält alle Zeichen nacheinander.
Eintreten
alpha = "abbbbc", K = 2
Ausgabe
5
Erklärung – Wir können die Teilsequenz „abbbc“ verwenden.
Eintreten
alpha = "mnnnnnnno", k = 3;
Ausgabe
7
Erklärung – Wir können die Teilsequenz „nnnnnnn“ verwenden.
Methode 1
Bei dieser Methode verwenden wir eine rekursive Funktion, um alle Teilfolgen einer bestimmten Länge zu finden. Darüber hinaus werden wir Funktionen definieren, um zu prüfen, ob eine Teilsequenz alle Zeichen nacheinander enthält. Wir werden die Kartendatenstruktur verwenden, um die maximalen und minimalen Häufigkeitsunterschiede zu berechnen.
Algorithmus
Schritt 1 – Definieren Sie die „f“-Karte, um die Häufigkeit von Zeichen zu speichern.
Schritt 2 – Wenn start gleich der Länge der temporären Zeichenfolge ist und die Zeichenfolgenlänge größer als 0 ist, befolgen Sie diese Schritte.
Schritt 3 – Initialisieren Sie die Variablen „minf“ und „maxf“, um die minimalen und maximalen Frequenzen zu speichern.
Schritt 4 – Löschen Sie die Karte und speichern Sie die Häufigkeit jedes Zeichens in der Karte.
Schritt 5 – Durchlaufen Sie die Kartenwerte und ermitteln Sie die maximalen und minimalen Häufigkeitswerte.
Schritt 6 – Wenn die maximale und minimale Frequenzdifferenz kleiner oder gleich K ist, prüfen Sie, ob die Zeichenfolge aufeinanderfolgende Zeichen enthält.
Schritt 6.1 – Definieren Sie in der Funktion checkForContinously() die Karte „pos“, um die letzte Position eines bestimmten Zeichens zu speichern.
Schritt 6.2 – Schleife durch die Schnur. Wenn das aktuelle Zeichen in der Karte vorhanden ist und der Unterschied zwischen der aktuellen Position des Zeichens und der letzten Position weniger als 1 beträgt, aktualisieren Sie die letzte Position. Andernfalls wird false zurückgegeben.
Schritt 6.3 – Fügen Sie den Charakter zur Karte hinzu, falls er nicht vorhanden ist.
Schritt 6.4 – Endlich true zurückgeben.
Schritt 7 – Wenn die Zeichenfolge aufeinanderfolgende Zeichen enthält und der Häufigkeitsunterschied weniger als K beträgt, aktualisieren Sie den Wert von „maxi“, wenn der Wert von „maxi“ kleiner als die Länge der aktuellen Teilsequenz ist. p>
Schritt 8 – Führen Sie einen rekursiven Aufruf durch, nachdem Sie das aktuelle Zeichen ausgeschlossen haben.
Schritt 9 – Hängen Sie das aktuelle Zeichen an das Ende der temporären Zeichenfolge an. Führen Sie außerdem einen rekursiven Aufruf mit der aktualisierten Zeichenfolge „tmp“ durch.
Beispiel
#include <bits/stdc++.h> using namespace std; int maxi = 0; // Check for continuous characters in the substring bool CheckForContinuous(string &tmp) { // map to store the last index of the character unordered_map<char, int> pos; for (int p = 0; p < tmp.length(); p++) { // When the last index exists in the map if (pos[tmp[p]]) { // If the last index is adjacent to the current index if (p - pos[tmp[p]] + 1 <= 1) pos[tmp[p]] = p + 1; else return false; } else { // When the map doesn't have a character as a key pos[tmp[p]] = p + 1; } } return true; } void getLongestSubSeq(string &alpha, string tmp, int start, int &k) { // To store the character's frequency unordered_map<char, int> f; if (start == alpha.length()) { if (tmp.length() > 0) { // To store minimum and maximum frequency of characters int minf = INT_MAX, maxf = INT_MIN; // Make map empty f.clear(); // Store frequency of characters in the map for (int p = 0; p < tmp.length(); p++) f[tmp[p]]++; // Get minimum and maximum value from the map for (auto &key : f) { minf = min(minf, key.second); maxf = max(maxf, key.second); } // Validate substring for frequency difference and continuous characters if (maxf - minf <= k && CheckForContinuous(tmp)) maxi = max(maxi, (int)tmp.length()); } return; } // Exclude current character getLongestSubSeq(alpha, tmp, start + 1, k); // Include current character tmp.push_back(alpha[start]); getLongestSubSeq(alpha, tmp, start + 1, k); } int main() { string alpha = "ppppqrs", tmp; int k = 2; getLongestSubSeq(alpha, tmp, 0, k); cout <<"The maximum length of the substring according to the given conditions is " << maxi; return 0; }
Ausgabe
The maximum length of the substring according to the given conditions is 6
Zeitkomplexität – O(N*2N), wobei O(N) zum Überprüfen aufeinanderfolgender Zeichen und O(2N) zum Finden aller Teilsequenzen dient.
Raumkomplexität – O(N) zum Speichern temporärer Teilsequenzen.
Wir verwenden eine einfache Methode, um alle Teilsequenzen einer bestimmten Zeichenfolge zu finden. Dies ist jedoch sehr zeitaufwändig. Es wird nicht empfohlen, diese Methode zur Lösung des Problems mit großen Zeichenfolgen zu verwenden.
Das obige ist der detaillierte Inhalt vonDie längste Teilsequenz, deren Zeichen mit der Teilzeichenfolge identisch sind und deren Häufigkeitsunterschied höchstens K beträgt. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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











So verwenden Sie AutoKorrektur zum Eingeben von Pfeilen in Word Eine der schnellsten Möglichkeiten, Pfeile in Word einzugeben, ist die Verwendung der vordefinierten AutoKorrektur-Verknüpfungen. Wenn Sie eine bestimmte Zeichenfolge eingeben, wandelt Word diese Zeichen automatisch in Pfeilsymbole um. Mit dieser Methode können Sie viele verschiedene Pfeilstile zeichnen. So geben Sie mit der AutoKorrektur einen Pfeil in Word ein: Bewegen Sie den Cursor an die Stelle im Dokument, an der der Pfeil erscheinen soll. Geben Sie eine der folgenden Zeichenkombinationen ein: Wenn Sie nicht möchten, dass Ihre Eingabe in ein Pfeilsymbol umgewandelt wird, drücken Sie dazu die Rücktaste auf Ihrer Tastatur

Verwenden Sie die Funktion Character.isDigit() von Java, um festzustellen, ob es sich bei einem Zeichen um ein numerisches Zeichen handelt. Zeichen werden intern im Computer in Form von ASCII-Codes dargestellt. Unter diesen sind die ASCII-Codewerte, die den numerischen Zeichen 0 bis 9 entsprechen, 48 bis 57. Um festzustellen, ob ein Zeichen eine Zahl ist, können Sie die von der Character-Klasse in Java bereitgestellte Methode isDigit() verwenden. Die Methode isDigit() gehört zur Klasse Character

Ihre physische oder numerische Tastatur bietet eine begrenzte Anzahl von Zeichenoptionen auf der Oberfläche. Es gibt jedoch mehrere Möglichkeiten, auf dem iPhone, iPad und Mac auf Buchstaben mit Akzent, Sonderzeichen und mehr zuzugreifen. Mit der Standard-iOS-Tastatur haben Sie schnellen Zugriff auf Groß- und Kleinbuchstaben, Standardzahlen, Satzzeichen und Zeichen. Natürlich gibt es noch viele andere Charaktere. Sie können zwischen Buchstaben mit diakritischen Zeichen und auf dem Kopf stehenden Fragezeichen wählen. Möglicherweise sind Sie auf ein verstecktes Sonderzeichen gestoßen. Wenn nicht, erfahren Sie hier, wie Sie auf iPhone, iPad und Mac darauf zugreifen können. So greifen Sie auf erweiterte Zeichen auf dem iPhone und iPad zu. Es ist sehr einfach, erweiterte Zeichen auf Ihrem iPhone oder iPad zu erhalten. Unter „Informationen“:

Der Speicher ist eine der wichtigsten Komponenten des Computers und hat einen erheblichen Einfluss auf die Leistung und Stabilität des Computers. Bei der Wahl des Gedächtnisses konzentrieren sich Menschen in der Regel auf zwei wichtige Parameter, nämlich Timing und Häufigkeit. Was ist also für die Gedächtnisleistung wichtiger: Timing oder Frequenz? Lassen Sie uns zunächst die Konzepte von Timing und Frequenz verstehen. Unter Timing versteht man das Zeitintervall, das ein Speicherchip benötigt, um Daten zu empfangen und zu verarbeiten. Sie wird normalerweise durch einen CL-Wert (CASLatency) dargestellt. Je kleiner der CL-Wert, desto schneller ist die Speicherverarbeitungsgeschwindigkeit. Die Frequenz liegt innerhalb

Die korrekte Anzeige chinesischer Zeichen in Matplotlib ist ein Problem, auf das viele chinesische Benutzer häufig stoßen. Standardmäßig verwendet matplotlib englische Schriftarten und kann chinesische Zeichen nicht korrekt anzeigen. Um dieses Problem zu lösen, müssen wir die richtige chinesische Schriftart festlegen und diese auf matplotlib anwenden. Nachfolgend finden Sie einige spezifische Codebeispiele, die Ihnen dabei helfen, chinesische Schriftzeichen in matplotlib korrekt anzuzeigen. Zuerst müssen wir die erforderlichen Bibliotheken importieren: importmatplot

Das ASUS tufz790plus unterstützt die Speicherfrequenz. Das ASUS TUFZ790-PLUS-Motherboard ist ein Hochleistungs-Motherboard, das Dual-Channel-DDR4-Speicher unterstützt und bis zu 64 GB Speicher unterstützt. Seine Speicherfrequenz ist mit bis zu 4800 MHz sehr leistungsstark. Spezifische unterstützte Speicherfrequenzen umfassen 2133 MHz, 2400 MHz, 2666 MHz, 2800 MHz, 3000 MHz, 3200 MHz, 3600 MHz, 3733 MHz, 3866 MHz, 4000 MHz, 4133 MHz, 4266 MHz, 4400 MHz, 4533 MHz, 4600 MHz, 4733 MHz und 4800 MHz. Ob im täglichen Gebrauch oder bei hohen Leistungsanforderungen

Bei einem hochgestellten Zeichen handelt es sich um ein oder mehrere Zeichen, entweder Buchstaben oder Zahlen, die Sie etwas über der normalen Textzeile platzieren müssen. Wenn Sie beispielsweise „1st“ schreiben müssen, muss der Buchstabe „st“ etwas höher sein als der Buchstabe „1“. Ebenso ist ein Index eine Gruppe von Zeichen oder ein einzelnes Zeichen und muss etwas niedriger als die normale Textebene eingestellt werden. Wenn Sie beispielsweise eine chemische Formel schreiben, müssen Sie die Zahlen unterhalb der normalen Zeichenzeile platzieren. Die folgenden Screenshots zeigen einige Beispiele für die hochgestellte und tiefgestellte Formatierung. Obwohl es wie eine entmutigende Aufgabe erscheinen mag, ist die Anwendung der hoch- und tiefgestellten Formatierung auf Ihren Text eigentlich ganz einfach. In diesem Artikel erklären wir in einigen einfachen Schritten, wie Sie Text ganz einfach mit Hoch- oder Tiefstellung formatieren können. Ich hoffe, Ihnen hat die Lektüre dieses Artikels gefallen. So wenden Sie hochgestellte Zeichen in Excel an

Der größte Einfluss von DDR4-Speichersticks auf Computer ist die Frequenz, und viele Benutzer wissen nicht, wie sie die Frequenz überprüfen können. Tatsächlich können Sie sie über die CPU-Software überprüfen, und alle Aspekte der Informationen werden sehr detailliert angezeigt. So überprüfen Sie die Frequenz von DDR4: 1. Sie müssen sie zuerst über die Software überprüfen. Sie können sie mit CPU-z überprüfen. 2. Wenn Sie fertig sind, öffnen Sie es und klicken Sie auf „Speicher“. 3. Zu diesem Zeitpunkt können Sie die „Häufigkeit“ unten sehen.
