Java栈操作——实现括号匹配

1, 题目描述

对于一行代码(字符串),里面可能出现大括号“{}”、中括号“[]”和小括号“()”,请编程判断改行代码的括号嵌套是否正确。“()”,“({})”,“printf(‘Hello Netease’)”等都是括号使用的正确方法,“(}”,”print(Hello Netease]”则是错误的范例。
 

package com.hj.study;

import java.util.Arrays;
import java.util.Stack;

public class StackMatch {

	public static void main(String[] args) {
		String str = "----(([123{2(0)2}]))----";
		System.out.println("结果---"+StackMatch(str));;

	}
	
	public static boolean StackMatch(String str) {
		char[] charArray = str.toCharArray();
		Stack<Character> stack = new Stack<>();
		for(int i = 0; i<charArray.length; i++) {
			if(charArray[i] == '{' || charArray[i] == '(' || charArray[i] == '['  ) {
			   //push(Object element), 把项压入堆栈顶部
				stack.push(charArray[i]);
			}
			//peek()查看堆栈顶部的对象,但不从堆栈中移除它
			if((charArray[i] == '}' && stack.peek()  == '{') 
					|| (charArray[i] == ')' &&  stack.peek()  == '(') 
					||( charArray[i] == ']' && stack.peek()  == '['  )) {
				//pop()移除堆栈顶部的对象,并作为此函数的值返回该对象。
				stack.pop();
			}
		}
		return stack.isEmpty();
		
	}
	

}

猜你喜欢

转载自blog.csdn.net/qq_38986609/article/details/88418661