您的位置:首页 > 编程语言 > Java开发

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

2014-03-30 18:42 375 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: