根据栈先进后出的特点,用来解决括号匹配的问题
循环遍历所有输入字符
- 遇到左括弧,进栈 ,继续下一次循环
- 遇到右括弧,取出当前栈顶元素,判断是否匹配(若是当前栈顶为空,则不匹配) ,
- 若是不匹配,直接退出·,括弧不匹配
- 若是匹配,则继续判断下一循环
- 到循环结束之后
- 若是栈为空,那么,括弧匹配
- 若是栈不为空,则括弧不匹配
import java.util.*;
public class bracket_match {
public static boolean match(char[] chars)
{
Stack<Character> stack=new Stack<>();
for(int i=0;i<chars.length;i++)
{
char c1=chars[i];
if(c1=='('||c1=='{'||c1=='[')
{
stack.push(c1);
}
else
{
if(stack.isEmpty())
{
return false;
}
else
{
char c2=stack.pop();
if(!( (c2=='('&&c1==')') || (c2=='{'&&c1=='}') ||(c2=='['&&c1==']')))
{
return false;
}
}
}
}
if(stack.isEmpty())
{
return true;
}
return false;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("请输入测试数据: ");
String input=in.nextLine();
char[] chars=input.toCharArray();
boolean flag=match(chars);
System.out.println(flag);
}
}