题解 | 完成括号匹配

完成括号匹配

https://www.nowcoder.com/practice/fe8d6a1b88af4ba6b4dbb10972059040

import java.util.Scanner;

import java.util.List;
import java.util.ArrayList;
import java.util.Stack;
import java.lang.StringBuffer;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        String input = new Scanner(System.in).nextLine();

        Stack<String> stack = new Stack<>();
        for(int i=0;i<input.length();i++){
            String subS = input.substring(i,i+1);
            if(subS.equals("[") ) stack.push(subS);
            else{
                //栈为空或栈顶为[
                if(stack.isEmpty()) stack.push(subS);
                else if(stack.peek().equals("[")) stack.pop();
                else stack.push(subS);
            }
        }

        StringBuffer sb = new StringBuffer(input);
        while(!stack.isEmpty()){
            String peek = stack.pop();
            if(peek.equals("[")) sb.append("]");
            else sb.insert(0,"[".toCharArray());
        }
        System.out.println(sb.toString());
    }
}

主要知识点:栈

思路:

1.先把能够匹配上的处理掉(删掉)

2.然后再把不能匹配上的逐个加括号(缺左括号就加左括号,缺右括号就加右括号)

全部评论

相关推荐

昨天 14:00
门头沟学院 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务