現在の位置: ホーム> 最新記事一覧> 文字列の各ペアのブラケットの内容を逆にする-PHP実装の詳細

文字列の各ペアのブラケットの内容を逆にする-PHP実装の詳細

M66 2025-09-24

ブラケットの各ペア間でサブストリングを反転させます

小文字と括弧を含む文字列が与えられているため、タスクは、最も内側のブラケットから開始し、一致するブラケットの各ペアの文字列を逆にし、最後にブラケットなしで処理された結果を返すことです。

入力:

s = "(abcd)"

出力:

「DCBA」

例2:

入力:

s = "(u(love)i)"

出力:

"あなたを愛してます"

説明:最初にサブストリング「愛」を反転させ、次に文字列全体を逆にします。

例3:

入力:

s = "(ed(et(oc))el)"

出力:

「leetcode」

説明:最初に、サブストリングの「OC」、次に「ETCO」、そして最後に文字列全体を反転させます。

制約

  • Sには、小文字の英語の文字と括弧のみが含まれています。
  • すべてのブラケットがバランスが取れていることを確認してください。

解決

スタックを使用して、括弧やネストされた構造の文字を追跡できます。特定の手順は次のとおりです。

  • 文字列内の各文字を繰り返します。
  • オープニングブラケット "("に遭遇した場合は、スタックに押し込みます。
  • 閉鎖ブラケット ")"が遭遇した場合、キャラクターは開口部のブラケット "(「」までスタックからポップされ、ブラケット内の文字を反転させてスタックに押し戻します。
  • 最後に、スタック内の内容は連結されており、反転した文字列を取得します。

PHP実装コードの例:

 <?php
// 例 1
echo reverseParentheses("(abcd)") . "\n";  // 出力:"dcba"

// 例 2
echo reverseParentheses("(u(love)i)") . "\n";  // 出力:"iloveu"

// 例 3
echo reverseParentheses("(ed(et(oc))el)") . "\n";  // 出力:"leetcode"
?>

説明する

関数のリバースパパレンツは、文字列を入力として取り、スタックを使用してネストされたブラケットを処理します。

  • 閉鎖ブラケット ")"が遭遇すると、キャラクターが開口部のブラケット "("までスタックからポップアップし始めます。
  • ポップされた文字を逆にして、それらをスタックに押し戻します。
  • 文字がブラケットでない場合、それらはスタックに直接配置されます。

最後に、スタック内の要素を連結して最終文字列を取得します。この方法は、ネストされたブラケットを効果的に処理し、ブラケットの各ペアの内容を反転した後、正しい文字順序を確保できます。