首页 > 其他 > 详细

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

时间:2021-05-30 10:48:00      阅读:9      评论:0      收藏:0      [点我收藏+]

问题描述:

给出一个字符串 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)反转每对字符串的子串(中等)

原文:https://www.cnblogs.com/ash98/p/14815566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!