栈的实际应用
##括号匹配问题
问题描述
给定一个字符串,里面可能包含“()”小括号和其他字符,编写程序检查该字符串是否成对出现
即有一个(,则有一个)进行匹配,每一个左括号都有一个右括号匹配,且不能有单独的括号出现。
解题思路
1.创建一个栈来存储左括号
2.从左到右遍历字符串,拿到每一个字符
3.判断该字符是不是左括号。如果是放入栈中存储
4.判断该字符是不是右括号,如果不是继续下一次循环遍历
5.如果字符是右括号,从栈中弹出一个元素T
6.判断元素t是否为Null,如果不是,则证明有对应左括号,如果是,证明没有对应的左括号
7.字符遍历完成判断栈是否为空,不为空则不匹配
代码实现
public class BracketMaptvhTest {
public static void main(String[] args) {
String str = "(上海(长安)())";
boolean match = isMacth(str);
System.out.println("括号是否匹配:"+match);
}
private static boolean isMacth(String str) {
//创建栈对象,用来存储左括号
Stack<String> chars = new Stack<>();
//从左向右遍历字符串
for (int i = 0; i < str.length(); i++