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)反转每对字符串的子串(中等)的主要内容,如果未能解决你的问题,请参考以下文章