suchen
HeimBackend-EntwicklungPHP-TutorialZählen Sie Vokalketten in Bereichen

Count Vowel Strings in Ranges

2559. Zählen Sie Vokalketten in Bereichen

Schwierigkeit:Mittel

Themen:Array, String, Präfixsumme

Sie erhalten ein 0-indiziertes Array von Zeichenfolgenwörtern und ein 2D-Array von Ganzzahlabfragen.

Jede Abfrage query[i] = [li, ri] fordert uns auf, die Anzahl der Zeichenfolgen zu ermitteln, die im Bereich li bis vorhanden sind ri (beide einschließlich) von Wörtern, die mit einem Vokal beginnen und enden.

Gibt ein Array ans der Größe query.length zurück, wobei ans[i] die Antwort auf die iteAbfrage ist.

Beachten Sie, dass die Vokalbuchstaben „a“, „e“, „i“, „o“ und „u“ sind.

Beispiel 1:

  • Eingabe: Wörter = ["aba", "bcb", "ece", "aa", "e"], Abfragen = [[0,2],[1,4],[1, 1]]
  • Ausgabe: [2,3,0]
  • Erklärung: Die Zeichenfolgen, die mit einem Vokal beginnen und enden, sind „aba“, „ece“, „aa“ und „e“.
    • Die Antwort auf die Abfrage [0,2] ist 2 (Strings „aba“ und „ece“).
    • zur Abfrage von [1,4] sind 3 (Zeichenfolgen „ece“, „aa“, „e“).
    • zur Abfrage von [1,1] ist 0.
    • Wir geben [2,3,0] zurück.

Beispiel 2:

  • Eingabe: Wörter = ["a", "e", "i"], Abfragen = [[0,2],[0,1],[2,2]]
  • Ausgabe: [3,2,1]
  • Erklärung:Jeder String erfüllt die Bedingungen, also geben wir [3,2,1] zurück.

Einschränkungen:

  • 1 5
  • 1
  • Wörter[i] bestehen nur aus englischen Kleinbuchstaben.
  • sum(words[i].length) 5
  • 1 5
  • 0 i i

Hinweis:

  1. Berechnen Sie im Voraus die Präfixsumme der Zeichenfolgen, die mit Vokalen beginnen und enden.
  2. Verwenden Sie unordered_set, um Vokale zu speichern.
  3. Überprüfen Sie, ob das erste und das letzte Zeichen der Zeichenfolge im Vokalsatz vorhanden sind.
  4. Subtrahieren Sie die Präfixsumme für den Bereich [l-1, r], um die Anzahl der Zeichenfolgen zu ermitteln, die mit Vokalen beginnen und enden.

Lösung:

Wir können diesen Schritten folgen:

  1. Auf Vokalzeichenfolgen prüfen: Erstellen Sie eine Hilfsfunktion, um festzustellen, ob eine Zeichenfolge mit einem Vokal beginnt und endet.
  2. Präfixsummen vorab berechnen:Verwenden Sie ein Präfixsummen-Array, um die kumulative Anzahl von Zeichenfolgen zu speichern, die mit Vokalen beginnen und enden.
  3. Antworten auf Abfragen:Verwenden Sie das Präfix-Summen-Array, um die Anzahl solcher Zeichenfolgen innerhalb des angegebenen Bereichs für jede Abfrage effizient zu berechnen.

Lassen Sie uns diese Lösung in PHP implementieren: 2559. Zählen Sie Vokalketten in Bereichen

<?php /**
 * @param String[] $words
 * @param Integer[][] $queries
 * @return Integer[]
 */
function vowelStrings($words, $queries) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

/**
 * Helper function to check if a string starts and ends with a vowel
 *
 * @param $word
 * @return bool
 */
function isVowelString($word) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example 1
$words1 = ["aba", "bcb", "ece", "aa", "e"];
$queries1 = [[0, 2], [1, 4], [1, 1]];
print_r(countVowelStringsInRanges($words1, $queries1)); // Output: [2, 3, 0]

// Example 2
$words2 = ["a", "e", "i"];
$queries2 = [[0, 2], [0, 1], [2, 2]];
print_r(countVowelStringsInRanges($words2, $queries2)); // Output: [3, 2, 1]
?>

Erläuterung:

  1. isVowelString-Funktion:

    • Überprüft, ob das erste und das letzte Zeichen der Zeichenfolge Vokale sind.
    • Verwendet in_array, um zu bestimmen, ob die Zeichen in der vordefinierten Vokalliste enthalten sind.
  2. Präfix-Summen-Array:

    • prefixSum[i] speichert die kumulative Anzahl der Vokalzeichenfolgen bis zum Index i-1.
    • Wenn das aktuelle Wort die Bedingung erfüllt, erhöhen Sie die Anzahl.
  3. Abfrageauflösung:

    • Für einen Bereich [l, r] beträgt die Anzahl der Vokalzeichenfolgen prefixSum[r 1] - prefixSum[l].
  4. Effizienz:

    • Der Aufbau des Präfix-Summen-Arrays erfordert O(n), wobei n die Anzahl der Wörter ist.
    • Das Lösen jeder Abfrage erfordert O(1), wodurch sich die Gesamtkomplexität O(n q) ergibt, wobei q ist die Anzahl der Abfragen.

Randfälle:

  • Alle Saiten beginnen und enden mit Vokalen.
  • Keine Zeichenfolgen beginnen und enden mit Vokalen.
  • Einzelelementbereiche in den Abfragen.

Dieser Ansatz geht effizient mit den Einschränkungen des Problems um.

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:

  • LinkedIn
  • GitHub

Das obige ist der detaillierte Inhalt vonZählen Sie Vokalketten in Bereichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Wie ändern Sie Daten, die in einer PHP -Sitzung gespeichert sind?Wie ändern Sie Daten, die in einer PHP -Sitzung gespeichert sind?Apr 27, 2025 am 12:23 AM

TomodifyDatainaphpSession, startTheSessionwithSession_Start (), dann $ _SessionToSet, modify, orremovevariables.1) startTheSession.2) setOrmodifySessionvariabling $ _Session.3) removeVariables mit ()

Geben Sie ein Beispiel für die Speicherung eines Arrays in einer PHP -Sitzung.Geben Sie ein Beispiel für die Speicherung eines Arrays in einer PHP -Sitzung.Apr 27, 2025 am 12:20 AM

Arrays können in PHP -Sitzungen gespeichert werden. 1. Starten Sie die Sitzung und verwenden Sie Session_Start (). 2. Erstellen Sie ein Array und speichern Sie es in $ _Session. 3. Abrufen Sie das Array durch $ _Session ab. 4. Optimieren Sie Sitzungsdaten, um die Leistung zu verbessern.

Wie funktioniert die Müllsammlung für PHP -Sitzungen?Wie funktioniert die Müllsammlung für PHP -Sitzungen?Apr 27, 2025 am 12:19 AM

Die PHP -Sitzungsmüllsammlung wird durch einen Wahrscheinlichkeitsmechanismus ausgelöst, um abgelaufene Sitzungsdaten zu beseitigen. 1) Legen Sie die Auslöserwahrscheinlichkeit und die Sitzungslebenszyklus in der Konfigurationsdatei ein. 2) Sie können Cron-Aufgaben verwenden, um Hochlastanwendungen zu optimieren. 3) Sie müssen die Häufigkeit und Leistung von Müllsammlungen ausgleichen, um Datenverlust zu vermeiden.

Wie können Sie die Sitzungsaktivität in PHP verfolgen?Wie können Sie die Sitzungsaktivität in PHP verfolgen?Apr 27, 2025 am 12:10 AM

Die Verfolgung von Benutzersitzungsaktivitäten in PHP wird durch Sitzungsverwaltung implementiert. 1) Verwenden Sie Session_start (), um die Sitzung zu starten. 2) Speichern Sie Daten über das $ _Session -Array. 3) Call Session_Destroy (), um die Sitzung zu beenden. Die Sitzungsverfolgung wird für die Analyse der Benutzerverhalten, die Sicherheitsüberwachung und die Leistungsoptimierung verwendet.

Wie können Sie eine Datenbank verwenden, um PHP -Sitzungsdaten zu speichern?Wie können Sie eine Datenbank verwenden, um PHP -Sitzungsdaten zu speichern?Apr 27, 2025 am 12:02 AM

Die Verwendung von Datenbanken zum Speichern von PHP -Sitzungsdaten kann die Leistung und Skalierbarkeit verbessern. 1) Konfigurieren Sie MySQL, um Sitzungsdaten zu speichern: Richten Sie den Sitzungsprozessor in Php.ini oder PHP -Code ein. 2) Benutzerdefinierte Sitzungsprozessor implementieren: Definieren Sie Öffnung, Schließen, Lesen, Schreiben und andere Funktionen, um mit der Datenbank zu interagieren. 3) Optimierung und Best Practices: Verwenden Sie Indexierung, Zwischenspeicherung, Datenkomprimierung und verteilter Speicher, um die Leistung zu verbessern.

Erläutern Sie das Konzept einer PHP -Sitzung in einfachen Worten.Erläutern Sie das Konzept einer PHP -Sitzung in einfachen Worten.Apr 26, 2025 am 12:09 AM

PhpSessionStrackUserDataacrossMultiplePageRequestsusesuseiquiTIdStoredInacookie.her'ShowtomagetheFectiv: 1) StartaSessionswithSession_start () und storateatain $ _Session.2) regeneratethessionSessionInoginWithSession_IDENT_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTEL

Wie schleifen Sie alle in einer PHP -Sitzung gespeicherten Werte durch?Wie schleifen Sie alle in einer PHP -Sitzung gespeicherten Werte durch?Apr 26, 2025 am 12:06 AM

In PHP können durch Sitzungsdaten in den folgenden Schritten iteriert werden: 1. Starten Sie die Sitzung mit Session_Start (). 2. Iterieren Sie durch die Foreach-Schleife durch alle Schlüsselwertpaare im $ _Session-Array. 3. Wenn Sie komplexe Datenstrukturen verarbeiten, verwenden Sie is_array () oder is_object () Funktionen und verwenden Sie print_r (), um detaillierte Informationen auszugeben. 4. Bei der Optimierung von Traversal kann Paging verwendet werden, um eine gleichzeitige Verarbeitung großer Datenmengen zu vermeiden. Auf diese Weise können Sie PHP -Sitzungsdaten in Ihrem tatsächlichen Projekt effizienter verwalten und verwenden.

Erklären Sie, wie Sie Sitzungen für die Benutzerauthentifizierung verwenden.Erklären Sie, wie Sie Sitzungen für die Benutzerauthentifizierung verwenden.Apr 26, 2025 am 12:04 AM

Die Sitzung realisiert die Benutzerauthentifizierung über den serverseitigen Statusverwaltungsmechanismus. 1) Erstellung der Sitzung und Erzeugung eindeutiger IDs, 2) IDs werden durch Cookies weitergeleitet, 3) Server speichert und greift auf Sitzungsdaten über IDs, 4) Benutzerauthentifizierung und Statusverwaltung zugeordnet und verbessert die Sicherheit und die Benutzererfahrung von Anwendungen.

See all articles

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

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.