当前位置: 首页> 最新文章列表> 反转字符串中的每对括号内容 - 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接受一个字符串作为输入,并使用堆栈来处理嵌套括号。

  • 当遇到右括号")"时,开始从堆栈中弹出字符,直到遇到左括号"("。
  • 将弹出的字符反转并推回堆栈。
  • 如果字符不是括号,则直接入栈。

最后,连接堆栈中的元素,得到最终的字符串。该方法能够有效处理嵌套括号,并在反转每对括号中的内容后确保字符顺序正确。