完成括号匹配

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());
	}
}

猜你喜欢

转载自blog.csdn.net/tc_1337/article/details/81321109
今日推荐