當前位置: 首頁> 最新文章列表> 反轉字符串中的每對括號內容- PHP實現詳解

反轉字符串中的每對括號內容- PHP實現詳解

M66 2025-09-24

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

給定一個包含小寫字母和括號的字符串,任務是從最裡面的括號開始,反轉每對匹配括號中的字符串,最終返回處理後的結果,不包含括號。

示例

輸入:

s = "(abcd)"

輸出:

"dcba"

示例2:

輸入:

s = "(u(love)i)"

輸出:

"iloveu"

解釋:先反轉子串"love",然後反轉整個字符串。

示例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"
?>

解釋

函數reverseParentheses接受一個字符串作為輸入,並使用堆棧來處理嵌套括號。

  • 當遇到右括號")"時,開始從堆棧中彈出字符,直到遇到左括號"("。
  • 將彈出的字符反轉並推回堆棧。
  • 如果字符不是括號,則直接入棧。

最後,連接堆棧中的元素,得到最終的字符串。該方法能夠有效處理嵌套括號,並在反轉每對括號中的內容後確保字符順序正確。