Während des Programmiervorgangs ist die String -Verarbeitung eine sehr häufige Anforderung. Besonders bei der Begegnung von Klammern und ihren verschachtelten Strukturen macht es Entwicklern häufig zu Problemen, Substrings in Klammern umzukehren. In diesem Artikel wird vorgestellt, wie die Zeichenfolgen in jedem Paar Klammern von Problembeschreibung, Algorithmus -Ideen zu bestimmten Implementierungen umgekehrt werden können.
Bei einer Zeichenfolge, die normale Zeichen und Klammern enthält, ist das Ziel, den Inhalt zwischen jedem Klammpaar umzukehren. Geben Sie beispielsweise "(ABC) DE (FGH)" ein und der erwartete Ausgang ist "cbadehgf". Solche Probleme können effektiv durch klare Regeln und Schritte gelöst werden.
Die folgenden Beispiele helfen dabei, das Problem zu verstehen:
eingeben: "(xyz)(abc)"
Ausgabe: "zyxcba"
eingeben: "a(bc(de)fg)h"
Ausgabe: "ahgfedcba"
Die am besten geeignete Datenstruktur zur Lösung dieses Problems ist der Stapel, da der Stapel die verschachtelten Hierarchien von Klammern problemlos verwalten kann. Der Gesamtprozess ist wie folgt:
function reverseParentheses($s) {
$stack = [];
$currentString = "";
for ($i = 0; $i < strlen($s); $i++) {
$char = $s[$i];
if ($char === '(') {
array_push($stack, $currentString);
$currentString = "";
} elseif ($char === ')') {
$currentString = strrev($currentString);
if (!empty($stack)) {
$currentString = array_pop($stack) . $currentString;
}
} else {
$currentString .= $char;
}
}
return $currentString;
}
// Beispielanruf
echo reverseParentheses("(abc)de(fgh)"); // Ausgabe cbadehgf
Die zeitliche Komplexität dieser Methode ist O (n) und n ist die Länge der Eingangszeichenfolge, da auf jedes Zeichen einmal zugegriffen wird. Die räumliche Komplexität ist auch O (n), mit der der Stapel und die aktuelle Zeichenfolge gespeichert werden.
Die Verwendung der Stapelstruktur zum Umkehr von Substrings in Klammern ist eine effiziente Lösung für solche Probleme. Die in diesem Artikel eingeführten Ideen- und Code-Beispiele eignen sich bei Referenzanwendungen bei der Begegnung mit ähnlichen Anforderungen an die String-Verarbeitungsanforderungen in tatsächlichen Projekten und helfen Entwicklern dabei, die Codierungseffizienz und die Fähigkeiten zur Problemlösung zu verbessern.