Menu
CoddyTech

Longest Valid Parentheses

むずかしいスタック動的計画法python iconjava iconcpp iconc iconjs icon+10

(と)だけで構成された文字列sが与えられます。正しい括弧の並びになっている最長の部分文字列(連続する文字の並び)を見つけてください。その部分文字列内のすべての(が後ろにある)で閉じられ、(()())のように括弧が正しく入れ子になっている必要があります。その部分文字列の長さを返してください。()すら含まれていない場合は0を返します。

関数

longestValidParentheses(s: string) → integer
sstring
( と ) の文字列
戻り値integer
最も長い整形式の部分文字列の長さ。存在しない場合は 0

制約

  • 1 ≤ s.length ≤ 6 × 104
  • sのすべての文字は(または)です。

例

入力
s = "()(())"
出力
6
説明
文字列全体は正しい形式です。()の後に(())が続いています。正しい形式の部分を2つ並べると、正しい形式の部分が1つできるので、答えは6文字すべてです。

lock icon提出時に隠しテスト+21件

challenge icon

発展問題

最長の整形式部分文字列がどこから始まるかも報告できますか。同じ長さの部分文字列が複数ある場合は、最も左にあるものを選んでください。

コードをリセット
def longestValidParentheses(s):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

s = "()(())"

期待値

6