完成括号匹配

1. 辅助栈

public class Main
{
	public static void main(String[] args)
	{
		Scanner scan = new Scanner(System.in);
		// 读入字符串s
		String s = scan.nextLine().trim();
		// 先对s的情况进行判断
		if ("".equals(s)) // 空串
		{
			System.out.println(s);
			return;
		}
		
		Stack<Character> stack = new Stack<Character>();
		
		// 存放匹配完成的结果
		StringBuffer sBuffer = new StringBuffer(s);
		
		for (int i=0; i<s.length(); i++)
		{
			char c = s.charAt(i);
			if (c == '[')
			{
				// 左括号入栈
				stack.push('[');
			}
			else
			{
				// 没有与之匹配的左括号
				if (stack.isEmpty())
				{
					sBuffer.insert(0, '[');
					continue;
				}
				stack.pop();
			}
		}
		
		// 栈不为空,左括号多了
		while (!stack.isEmpty())
		{
			sBuffer.insert(sBuffer.length(), ']');
			stack.pop(); // 弹出一个左括号
		}
		// 打印括号匹配的结果
		System.out.println(sBuffer.toString());
	}
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值