Wir bezeichnen eine Parens-Gruppe als Open Paren (, als Matching Close Paren )und als alles, was sich in ihnen befindet.
Eine Parens-Gruppe oder Zeichenfolge wird als Klammerausgleich bezeichnet, wenn sie entweder nichts oder nur 2 Klammerausgleichs-Parens-Gruppen enthält.
Beispielsweise:
The string "(()())()" is parenthesly balanced
( )() Because it contains exactly 2 parenthesly balanced parens groups
()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing.
Gleichfalls:
The string "(()(()))()" is not parenthesly balanced
( )() Because it contains a parens group that is not parenthesly balanced: the left one
()( ) The left one is not balanced because it contains a parens group that is not balanced: the right one
() The right one is not balanced because it only contains one balanced group.
Eine in Klammern gesetzte Zeichenfolge oder eine Parens-Gruppe sollte also entweder:
- Überhaupt nichts enthalten.
- Oder Sie enthalten nur und genau 2 in Klammern gesetzte Gruppen. Es sollte nichts anderes enthalten.
Aufgabe:
Ihre Aufgabe ist es, eine Funktion oder ein Programm zu schreiben, das prüft, ob eine bestimmte Zeichenfolge in Klammern steht oder nicht.
Eingang:
Die Eingabe erfolgt als Zeichenfolge oder Liste von Zeichen oder ähnlichem. Sie können davon ausgehen, dass die Zeichenfolge nur aus den Zeichen '('und besteht ')'. Sie können auch davon ausgehen, dass jedes offene Paren (ein passendes enges Paren )hat. Machen Sie sich also keine Gedanken über Zeichenfolgen wie "((("oder ")("oder "(())("...
Hinweis: Wie bereits erwähnt durch @DigitalTrauma in seinem Kommentar unten, dann ist es in Ordnung , die subtitute ()Combo durch andere Zeichen (wie <>, [], ...), wenn es zusätzliche Arbeit verursacht , wie in einigen Sprachen zu entkommen
Ausgabe:
Alles, was signalisiert, ob die Zeichenfolge in Klammern steht oder nicht (wahr oder falsch, 1 oder 0, ...). Bitte geben Sie in Ihrer Antwort an, welche Ergebnisse Ihre Funktion / Ihr Programm erwarten.
Beispiele:
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
Die letzten beiden Beispiele haben wirklich einen Unterschied gemacht!
Viel Glück!
"(()())()"würde dargestellt als [0, 0, 1, 0, 1, 1, 0, 1]. Dies würde die Notwendigkeit beseitigen, die Eingabe in Zeichencode umzuwandeln und dann zu subtrahieren.
