括号正确嵌套问题的实现(Java)

最近比较忙,前几天实现的一些小算法没时间写到博客上面,今天有时间了,把它整理出来,跟大家分享。

废话少说,进入正题。

题目描述:给定一字符串,其内包含“()”,“{}”和“[]”三种括号,请设计算法检验括号是否正确嵌套(如果字符串内不包含括号元素,按未正确嵌套处理)

首先给出代码,接下来我会对代码进行分析。

import java.util.*;
public class Main{
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
        	String str1="";
        	while(in.hasNext()){
            	str1=in.nextLine();
            	System.out.println(parse(str1));
        	}
	}
	public static boolean parse(String s){
		ArrayList result=new ArrayList();
		if (s.contains("(")||s.contains("{")||s.contains("[")||s.contains("]")||s.contains("}")||s.contains(")")) {
			for(int i=0;i0&&count>0){
					for(int i=0;i

本代码采用ArrayList存储括号字符,即遍历字符串字符,每当遇到括号元素时,就将其加入该集合。

接下来就是对ArrayList进行处理了

1.如果字符串中不包含括号元素,直接返回false;如果包含括号元素,就将该括号元素加入ArrayList集合;

2.如果该ArrayList的大小,即size()不为偶数,那么说明括号一定没有正确嵌套。因为我们知道,括号都是成对出现的;

3.如果该ArrayList的大小,即size()为偶数,那么进行如下处理:

如果集合内的某一元素和其相邻元素能够组成括号对,那么就从该集合中,将该成对括号清除。接下来,再继续如此操作,进行count(size()/2)次后,如果该集合内仍然有元素,即size()大于0,那么说明括号没有正确嵌套。等于0,说明括号正确嵌套。

以上是个人愚见,如有不妥支持,还望各位看官批评指正。

你可能感兴趣的:(括号正确嵌套问题的实现(Java))