每日一题:1190. 反转每对括号间的子串

解题思路

利用栈的方式,遇到(及字母就进行入栈操作,遇到)就进行出栈操作,并将每次的串入栈
例如 s = “(u(love)i)”
栈中元素:
(u(love 遇到’)’
(u love i 遇到’)’
uevoli

代码

class Solution {
    public String reverseParentheses(String s) {
        char[] chars = s.toCharArray();
        StringBuilder sb = new StringBuilder();
        LinkedList<String> stack = new LinkedList<>();
        int n = chars.length;
        for (int i=0;i<n;i++){
            if (chars[i]=='(' || Character.isAlphabetic(chars[i])){
                stack.add(chars[i]+"");
            }
            else if (chars[i]==')'){
                StringBuilder tem = new StringBuilder();
                while (!stack.getLast().equals("(")){
                    tem.append(stack.getLast());
                    stack.removeLast();
                }
                stack.removeLast();
                tem.reverse();
                stack.add(tem.toString());//将目前的串入栈
            }
        }
        while (!stack.isEmpty()){
            sb.append(stack.getLast());
            stack.removeLast();
        }
        sb.reverse();
        return sb.toString();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值