ホームページ >バックエンド開発 >PHPチュートリアル >各括弧間の部分文字列を反転する

各括弧間の部分文字列を反転する

王林
王林オリジナル
2024-07-16 11:21:41581ブラウズ

Reverse Substrings Between Each Pair of Parentheses

1190。各括弧の間の部分文字列を反転します

英小文字と括弧で構成される文字列 s が与えられます。

一致する括弧の各ペア内の文字列を、最も内側のものから順に反転します。

結果には括弧を含めない

例 1:

  • 入力: s = "(abcd)"
  • 出力: "dcba"

例 2:

  • 入力: s = "(u(love)i)"
  • 出力:「iloveu」
  • 説明: まず部分文字列「love」が反転され、次に文字列全体が反転されます。

例 3:

  • 入力: s = "(ed(et(oc))el)"
  • 出力: "leetcode"
  • 説明: まず、部分文字列「oc」を反転し、次に「etco」を反転し、最後に文字列全体を反転します。

制約:

  • 1
  • s には、小文字の英字と括弧のみが含まれます。
  • すべての括弧のバランスが取れていることが保証されます。

解決策:

段階的な計画は次のとおりです:

  1. スタックを使用して、文字とネストされた括弧を追跡します。
  2. 文字列内の各文字をスキャンします。
  3. 左括弧 '(' が見つかった場合は、それをスタックにプッシュします。
  4. 閉じ括弧 ')' が見つかった場合は、開き括弧 '(' に到達するまでスタックからポップします。収集された部分文字列を反転してスタックに戻します。
  5. 最後に、スタックの内容を連結して結果を取得します。

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 を入力として受け取ります。
  • スタックは、文字とネストされた括弧を追跡するために使用されます。
  • 文字列をトラバースすると次のようになります。
    • 閉じ括弧 ) が見つかった場合は、開き括弧 (.
    • ) が見つかるまでスタックからポップし始めます。
    • ポップされた文字 (括弧内) を収集し、反転してスタックに戻します。
    • 文字が右括弧ではない場合、スタックに直接プッシュされます。
  • 最後に、括弧が含まれないようにして、スタックの要素を連結して結果文字列を形成します。

このメソッドは、ネストされた括弧を効率的に処理し、括弧の各ペア内の部分文字列を反転した後、文字の正しい順序を保証します。

連絡先リンク

  • LinkedIn
  • GitHub

以上が各括弧間の部分文字列を反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。