1190。各括弧の間の部分文字列を反転します
中
英小文字と括弧で構成される文字列 s が与えられます。
一致する括弧の各ペア内の文字列を、最も内側のものから順に反転します。
結果には括弧を含めない。
例 1:
-
入力: s = "(abcd)"
-
出力: "dcba"
例 2:
-
入力: s = "(u(love)i)"
-
出力:「iloveu」
-
説明: まず部分文字列「love」が反転され、次に文字列全体が反転されます。
例 3:
-
入力: s = "(ed(et(oc))el)"
-
出力: "leetcode"
-
説明: まず、部分文字列「oc」を反転し、次に「etco」を反転し、最後に文字列全体を反転します。
制約:
- 1
-
s には、小文字の英字と括弧のみが含まれます。
- すべての括弧のバランスが取れていることが保証されます。
解決策:
段階的な計画は次のとおりです:
- スタックを使用して、文字とネストされた括弧を追跡します。
- 文字列内の各文字をスキャンします。
- 左括弧 '(' が見つかった場合は、それをスタックにプッシュします。
- 閉じ括弧 ')' が見つかった場合は、開き括弧 '(' に到達するまでスタックからポップします。収集された部分文字列を反転してスタックに戻します。
- 最後に、スタックの内容を連結して結果を取得します。
PHP での実装は次のとおりです: 1190。各括弧の間の部分文字列を反転します
<?php
// Example 1
echo reverseParentheses("(abcd)") . "\n"; // Output: "dcba"
// Example 2
echo reverseParentheses("(u(love)i)") . "\n"; // Output: "iloveu"
// Example 3
echo reverseParentheses("(ed(et(oc))el)") . "\n"; // Output: "leetcode"
?>
説明
- 関数 reverseParentheses は文字列 s を入力として受け取ります。
- スタックは、文字とネストされた括弧を追跡するために使用されます。
- 文字列をトラバースすると次のようになります。
- 閉じ括弧 ) が見つかった場合は、開き括弧 (.
) が見つかるまでスタックからポップし始めます。
- ポップされた文字 (括弧内) を収集し、反転してスタックに戻します。
- 文字が右括弧ではない場合、スタックに直接プッシュされます。
- 最後に、括弧が含まれないようにして、スタックの要素を連結して結果文字列を形成します。
このメソッドは、ネストされた括弧を効率的に処理し、括弧の各ペア内の部分文字列を反転した後、文字の正しい順序を保証します。
連絡先リンク
以上が各括弧間の部分文字列を反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。