1190. 反转每对括号间的子串
Posted lgz0921
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1190. 反转每对括号间的子串相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/
思路:利用栈就可以做到从里向外一层一层反转了。栈中存的是需要反转的子串的起始位置前面的'('的位置,每当访问到')'的时候,说明从栈顶的位置的加一位置到当前')'的位置的减1位置的子串需要反转了(我是这么写的,加1减一是为了不让括号一起反转,其实连括号一起反转了也没事,因为外层的反转也反转了内层的括号了,哈哈哈~~,最后反正不需要括号~~~)。最后replace掉括号就是结果啦~~~
上代码:
class Solution {
fun reverseParentheses(s: String): String {
val result = StringBuilder(s)
val stack = Stack<Int>()
for (i in s.indices) {
when (s[i]) {
'(' -> stack.add(i)
')' -> {
var l = stack.pop() + 1
var r = i - 1
while (l < r) {
result[l] = result[r].also { result[r] = result[l] }
l++
r--
}
}
}
}
return result.toString().replace("(", "").replace(")", "")
}
}
以上是关于1190. 反转每对括号间的子串的主要内容,如果未能解决你的问题,请参考以下文章