java实现用栈解决一个串中的括号是否匹配

package com.zhangle.arithmetic;


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
 * 这里用栈,如果是匹配的括号,应该栈中的结果为空(一一对应消除)
 * @author lenovo
 *
 */
public class StackBrackets {
//这里我们聚合使用list,因为主要是添加和删除操作
private static List<String> stacklist=new ArrayList<String>();
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String str=scanner.nextLine();
boolean flag=isBrackets(str);
if (flag) {
System.out.println("匹配");
}
else {
System.out.println("不匹配");
}
}
/**
* 这里用空格spit括号,默认true,只要出错就不继续了,直接返回false
* @param str
* @return
*/
public static boolean isBrackets(String str) {
if (str==null||!str.contains(" ")) {
return false;
}
String[] brackets=str.split(" ");
int max=0;
for (int i = 0; i < brackets.length; i++) {
max=stacklist.size();
try {
if (brackets[i].equals("{")||brackets[i].equals("[")||
brackets[i].equals("(")) {
stacklist.add(brackets[i]);
}
else {
if (
(brackets[i].equals(")")&&stacklist.get(max-1).equals("("))|| 
(brackets[i].equals("]")&&stacklist.get(max-1).equals("["))|| 
(brackets[i].equals("}")&&stacklist.get(max-1).equals("{")) )
{
stacklist.remove(max-1);
}

}
} catch (Exception e) {

e.printStackTrace();
return false;
}

}
if (stacklist.size()!=0) {
return false;
}
return true;
}
}

java实现用栈解决一个串中的括号是否匹配,布布扣,bubuko.com

java实现用栈解决一个串中的括号是否匹配

上一篇:effective C++ 1 view c++ as a federation of languages


下一篇:用python实现各种排序算法