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. 反转每对括号间的子串的主要内容,如果未能解决你的问题,请参考以下文章

1190. 反转每对括号间的子串

leetcode中等1190反转每对括号间的子串

力扣leetcode1190. 反转每对括号间的子串

LeetCode 1190 反转每对括号间的子串[栈]

2021/5/26 刷题笔记反转每对括号间的子串

力扣练习——12 反转每对括号间的子串