LeetCode(22)反转每对字符串的子串(中等)

Posted ash98

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(22)反转每对字符串的子串(中等)相关的知识,希望对你有一定的参考价值。

问题描述:

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

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

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

代码:

class Solution {
public String reverseParentheses(String s) {
Deque<String> stack = new LinkedList<String>();
StringBuffer sb = new StringBuffer();
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();
}
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/solution/fan-zhuan-mei-dui-gua-hao-jian-de-zi-chu-gwpv/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

值得注意的:

本题使用栈解决 利用栈后进先出的特点将字符串由内开始反转,

首先字符从左开始遍历 遍历遇到的小写字母放入str末尾

如果碰到左括号 那么将当前遍历的字符(str)插入栈中 str置空

如果碰到右括号 则将当前遍历的字符(str)反转 得到的字符串插入上一个栈的顶部 

直到所有元素遍历完成 输出结果。

 

以上是关于LeetCode(22)反转每对字符串的子串(中等)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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