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