首頁 >後端開發 >php教程 >反轉每對括號之間的子字串

反轉每對括號之間的子字串

王林
王林原創
2024-07-16 11:21:41582瀏覽

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作為輸入。
  • 堆疊用於追蹤字元和巢狀括號。
  • 當我們遍歷字串時:
    • 如果遇到右括號 ),我們開始從堆疊中彈出,直到找到左括號 (.
    • 我們收集彈出的字元(位於括號內),反轉它們,然後將它們推回堆疊。
    • 如果字元不是右括號,則直接入堆疊。
  • 最後,我們將堆疊中的元素連接起來形成結果字串,確保不包含括號。

此方法可以有效地處理巢狀括號,並確保在反轉每對括號內的子字串後字元的順序正確。

聯絡連結

  • 領英
  • GitHub

以上是反轉每對括號之間的子字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn