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;
}
}
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并发编程之线程管理(高级线程同步7)
- java基础__多线程
- java基础__IO
- 使用Struts1实现文件上传(一)
- dwr+spring
- java基础__反射
- Java多线程
- 从JDK看设计模式之行为模式:迭代器
- java的一些基础知识
- Spring声明式事务配置管理方法
- Java开发环境配置
- Spring源代码解析(二):IoC容器在Web容器中的启动
- Spring3.x企业应用开发实战-Spring+Hibernat架构分析
- JAVA中的IO 流们
- Spring3.x企业应用开发实战-Spring+Hibernat架构分析
- java编程规范之java注释规范
- java编程规范之java注释规范
- java编程规范之java注释规范
- java8+eclipse+maven开发环境搭建
- 第三章 DispatcherServlet详解 ——跟开涛学SpringMVC