首页 > 其他分享 >1190. 反转每对括号间的子串

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

时间:2022-11-01 20:36:34浏览次数:144  
标签:子串 ch 示例 1190 括号 反转 字符串 sb

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

给出一个字符串 s(仅含有小写英文字母和括号)。

请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。

注意,您的结果中 不应 包含任何括号。

示例 1:

输入:s = "(abcd)"
输出:"dcba"

示例 2:

输入:s = "(u(love)i)"
输出:"iloveu"
解释:先反转子字符串 "love" ,然后反转整个字符串。

示例 3:

输入:s = "(ed(et(oc))el)"
输出:"leetcode"
解释:先反转子字符串 "oc" ,接着反转 "etco" ,然后反转整个字符串。

示例 4:

输入:s = "a(bcdefghijkl(mno)p)q"
输出:"apmnolkjihgfedcbq"

提示:

  • 1 <= s.length <= 2000
  • s 中只有小写英文字母和括号
  • 题目测试用例确保所有括号都是成对出现的
class Solution {
    public String reverseParentheses(String s) {

        // 创建一个放字符串的栈, 以及一个保存当前字符的变量
        Deque<String> stack = new LinkedList<String>();
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch == '(') {
                // 遇到 ( 就将当前的字符串推入栈, 并将当前字符串其设置为空
                stack.push(sb.toString());
                sb.setLength(0);
            } else if (ch == ')') {
                // 遇到 ) 就将当前的字符串反转, 然后与栈的顶部元素合并, 将栈的顶部元素弹出
                sb.reverse();
                sb.insert(0, stack.pop());
            } else {
                // 遇到普通的字符就将其添加到当前字符串的尾部
                sb.append(ch);
            }
        }
        // 遍历结束返回字符串
        return sb.toString();
    }
}

 

标签:子串,ch,示例,1190,括号,反转,字符串,sb
From: https://www.cnblogs.com/fulaien/p/16849024.html

相关文章

  • 蓝桥杯-着急的WYF(不同子串个数)-Suffix Array后缀数组
    前置知识:后缀数组参考链接:https://blog.csdn.net/u013371163/article/details/60469533https://www.bilibili.com/video/BV1sb411t79N?from=search&seid=13723955058308......
  • Java奇技淫巧:new对象后加大括号{},最后顺便做了个小框架?
    这个技术很少有教程来讲,但是在源码中经常出现,所以我感觉有必要单独拿出来说一说。步骤1 new一个匿名子类对象    我姑且叫这种情况为“匿名子类”吧,就是有这样的情况......
  • BM-66-最长公共子串
    看复杂度要求是O(N^2^),是二层遍历比较吗?那又如何保存最长的字串呢?动态数组?有没有更好的做法?感觉最长字串比最长子序列简单,因为它是连续的,完全可以从每个字符起始扫描,O(N^M......
  • LeetCode 题解 | 3. 无重复字符的最长子串 Javascript
    /***@param{string}str*@returnsnumber*思路:1.start与range组合成一个窗口,窗口内的子串就是当前最长不重复的字符串*2.range每次循环递增*......
  • 动态规划 -- 最长公共子串
    publicStringLCS(Stringstr1,Stringstr2){intmax=0;//存储中间值int[][]p=newint[str1.length()][str2.length()];S......
  • 【leetcode_C++_栈与队列_day9】20. 有效的括号&1047. 删除字符串中的所有相邻重复项&
    20.有效的括号给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭......
  • 20 有效的括号
    题目20有效的括号给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺......
  • leetcode 20. 有效的括号(栈的解法)
    题目在这:https://leetcode-cn.com/problems/valid-parentheses/括号匹配问题,立马想到用栈去做.遇到左括号进栈,遇到右括号匹配当前栈顶,相同就把栈顶的元素弹出,不同直接返回F......
  • Luogu P5658 括号树
    LuoguP5658括号树来补一道当年考场上没做出来的题。不难想到树上DP,关键在于如何设置函数与转移。按题意,记$k_i$为以$s_i$结尾的串中的合法子串数;记$cnt_i$为......
  • 栈的使用以及括号匹配扩展
    678. ValidParenthesisStringMedium68824FavoriteShareGivenastringcontainingonlythreetypesofcharacters:'(',')'and'*',writeafunctiontocheckwhet......