2381. Buchstabenverschiebung II
Schwierigkeit:Mittel
Themen:Array, String, Präfixsumme
Sie erhalten eine Zeichenfolge s aus englischen Kleinbuchstaben und ein 2D-Integer-Array „shifts“, wobei „shifts[i] = [starti, endi, Directioni]. Für jedes i verschiebendie Zeichen in s vom Indexanfangi zum Indexendei (einschließlich) nach vorne, wenn Richtungi = 1, oder verschieben Sie die Zeichen nach hinten, wenn Richtungi = 0.
Ein Zeichennach vorne zu verschieben bedeutet, es durch den nächsten Buchstaben im Alphabet zu ersetzen (umbrechend, sodass aus „z“ „a“ wird). Ebenso bedeutet das Verschieben eines Zeichens nach hinten, dass es durch den vorherigen Buchstaben im Alphabet ersetzt wird (umbrochen, sodass aus „a“ „z“ wird).
Gibdie letzte Zeichenfolge zurück, nachdem alle derartigen Verschiebungen zu s angewendet wurden.
Beispiel 1:
- Eingabe: s = „abc“, Verschiebungen = [[0,1,0],[1,2,1],[0,2,1]]
- Ausgabe: „Ass“
- Erklärung: Verschieben Sie zunächst die Zeichen von Index 0 nach Index 1 nach hinten. Jetzt ist s = „zac“.
- Zweitens verschieben Sie die Zeichen von Index 1 nach Index 2 nach vorne. Jetzt s = "zbd".
- Zuletzt verschieben Sie die Zeichen von Index 0 nach Index 2 nach vorne. Jetzt ist s = „Ass“.
Beispiel 2:
- Eingabe: s = "dztz", Verschiebungen = [[0,0,0],[1,1,1]]
- Ausgabe: „catz“
- Erklärung: Verschieben Sie zunächst die Zeichen von Index 0 nach Index 0 nach hinten. Jetzt ist s = „cztz“.
- Zuletzt verschieben Sie die Zeichen von Index 1 nach Index 1 nach vorne. Jetzt ist s = „catz“.
Einschränkungen:
- 1 4
shifts[i].length == 3
- 0 i i 0 i s besteht aus englischen Kleinbuchstaben.
Hinweis:
- Anstatt jeden Charakter in jeder Schicht zu verschieben, könnten Sie den Überblick darüber behalten, welche Charaktere über alle Schichten hinweg um wie viel verschoben werden?
- Versuchen Sie, den Beginn und das Ende jeder Schicht zu markieren, und führen Sie dann eine Präfixsumme der Schichten durch.
Lösung:
Wir müssen vermeiden, die Zeichen bei jeder Verschiebung einzeln zu verschieben, da dies für große Eingaben zu langsam wäre. Stattdessen können wir einen optimaleren Ansatz verwenden, indem wir eine Technik namensPräfixsumme nutzen.
Schritte:
- Markieren Sie die Verschiebungsgrenzen: Anstatt jedes Zeichen sofort zu verschieben, markieren wir die Verschiebungseffekte am Anfang und Ende jedes Bereichs.
- Präfixsumme anwenden: Nachdem wir alle Verschiebungen markiert haben, können wir die kumulativen Verschiebungen bei jedem Zeichen mithilfe der Präfixsummentechnik berechnen. Dadurch können wir die kumulativen Verschiebungen effizient auf jedes Zeichen anwenden.
- Führen Sie die Verschiebungen durch: Sobald wir die Gesamtverschiebung für jedes Zeichen kennen, können wir die Verschiebungen (entweder vorwärts oder rückwärts) auf die Zeichenfolge anwenden.
Lassen Sie uns diese Lösung in PHP implementieren: 2381. Buchstabenverschiebung II
<?php /** * @param String $s * @param Integer[][] $shifts * @return String */ function shiftingLetters($s, $shifts) { ... ... ... /** * go to ./solution.php */ } // Test the function $s1 = "abc"; $shifts1 = [[0, 1, 0], [1, 2, 1], [0, 2, 1]]; echo shiftingLetters($s1, $shifts1) . "\n"; // Output: "ace" $s2 = "dztz"; $shifts2 = [[0, 0, 0], [1, 1, 1]]; echo shiftingLetters($s2, $shifts2) . "\n"; // Output: "catz" ?>
Erläuterung:
- Für jede Schicht [Anfang, Ende, Richtung] erhöhen wir ein Schichtarray am Anfang und dekrementieren am Ende 1. Dadurch können wir den Anfang und das Ende des Schichtbereichs verfolgen.
- Nachdem wir alle Verschiebungen verarbeitet haben, wenden wir eine Präfixsumme auf das Verschiebungsarray an, um die kumulative Verschiebung an jedem Index zu erhalten.
- Zuletzt wenden wir die kumulative Verschiebung auf jedes Zeichen in der Zeichenfolge an.
Erklärung des Codes:
- Eingabeanalyse: Wir konvertieren die Eingabezeichenfolge s zur einfacheren Handhabung in ein Array von Zeichen.
- Shift Array: Wir initialisieren ein Shift Array der Größe n 1 auf Null. Dieses Array wird verwendet, um die Verschiebungseffekte zu verfolgen. Für jede Schicht [Start, Ende, Richtung] passen wir die Werte bei Schicht[Start] und Schicht[Ende 1] an, um den Beginn und das Ende der Schicht widerzuspiegeln.
- Präfixsumme: Wir berechnen die Gesamtverschiebung für jedes Zeichen, indem wir über das Verschiebungsarray iterieren und eine kumulative Summe der Verschiebungen beibehalten.
- Zeichenverschiebung: Für jedes Zeichen in der Zeichenfolge berechnen wir das endgültig verschobene Zeichen mithilfe der Formel (ord(currentChar) - ord('a') totalShift) % 26, was die kreisförmige Natur des Zeichens berücksichtigt Alphabet.
- Rückgabeergebnis: Die endgültige Zeichenfolge wird erhalten, indem das Zeichenarray zurück in eine Zeichenfolge umgewandelt und zurückgegeben wird.
Zeitkomplexität:
- Zeitkomplexität: O(n·m), wobei n die Länge der Zeichenfolge s und m die Anzahl der Verschiebungen ist. Dies liegt daran, dass wir die Zeichenfolge und die Liste der Schichten jeweils einmal durchlaufen.
- Raumkomplexität: O(n), wobei n die Länge der Zeichenfolge s ist, aufgrund des für das Schiebearray benötigten Platzes.
Diese Lösung bewältigt das Problem effizient, selbst wenn die Obergrenzen der Eingabebeschränkungen gelten.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
- GitHub
Das obige ist der detaillierte Inhalt vonBuchstabenverschiebung II. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

PHP bleibt in der modernen Webentwicklung wichtig, insbesondere in Content-Management- und E-Commerce-Plattformen. 1) PHP hat ein reichhaltiges Ökosystem und eine starke Rahmenunterstützung wie Laravel und Symfony. 2) Die Leistungsoptimierung kann durch OPCACHE und NGINX erreicht werden. 3) Php8.0 führt den JIT -Compiler ein, um die Leistung zu verbessern. 4) Cloud-native Anwendungen werden über Docker und Kubernetes bereitgestellt, um die Flexibilität und Skalierbarkeit zu verbessern.

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.

PHP und Python haben jeweils ihre eigenen Vorteile und eignen sich für verschiedene Szenarien. 1.PHP ist für die Webentwicklung geeignet und bietet integrierte Webserver und reichhaltige Funktionsbibliotheken. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit prägnanter Syntax und einer leistungsstarken Standardbibliothek. Bei der Auswahl sollte anhand der Projektanforderungen festgelegt werden.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

PHP bleibt ein leistungsstarkes und weit verbreitetes Tool in der modernen Programmierung, insbesondere im Bereich der Webentwicklung. 1) PHP ist einfach zu bedienen und nahtlos in Datenbanken integriert und für viele Entwickler die erste Wahl. 2) Es unterstützt die Erzeugung der dynamischen Inhalte und die objektorientierte Programmierung, die für die schnelle Erstellung und Wartung von Websites geeignet sind. 3) Die Leistung von PHP kann verbessert werden, indem Datenbankabfragen zwischengespeichert und optimiert werden, und die umfangreiche Community und sein reiches Ökosystem machen es im heutigen Technologiestack immer noch wichtig.

In PHP werden schwache Referenzen in der WeaPreference -Klasse implementiert und verhindern nicht, dass der Müllsammler Objekte zurückerobern. Schwache Referenzen eignen sich für Szenarien wie Caching -Systeme und Event -Hörer. Es ist zu beachten, dass es das Überleben von Objekten nicht garantieren kann und dass die Müllsammlung möglicherweise verzögert wird.

Mit der \ _ \ _ -Invoke -Methode können Objekte wie Funktionen bezeichnet werden. 1. Definieren Sie die Methode \ _ \ _, damit das Objekt aufgerufen werden kann. 2. Bei Verwendung der Syntax $ OBJ (...) wird PHP die Methode \ _ \ _ aufrufen. 3.. Geeignet für Szenarien wie Protokollierung und Taschenrechner, Verbesserung der Codeflexibilität und Lesbarkeit.


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

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools