括号平衡和正确嵌套

        关于编译器和文本编辑器的一个共同的问题:确定字符串中的括号是否平衡和正确嵌套。

        例如,字符串”((())())()”包含正确嵌套双括号,其中所述字符串),(),(和())没有正确匹配。给出了一个算法,   如果一个字符串包含正确的嵌套和平衡括号则返回匹配括号的个数,否则返回-1。给出一个字符串”(()(()))”输出的结果是包含正确的嵌套和平衡括号的个数4。给出字符串”(()”,则返回-1。

import java.util.Stack;

public class 括号平衡和正确嵌套 {
	public static char LeftParenthesis = '(';
	public static char RightParenthesis = ')';
	public static void main(String[] args) {
		String string = "(()(()))";
		//String string = "(()";
		System.out.println(AreParenthesesBalanced(string));
	}
	public static int AreParenthesesBalanced(String str)
	{
		int count = 0;//匹配的括号的个数
	    Stack<Integer> items = new Stack();
	    int left = 0;//统计左括号的个数
	    for (int i = 0; i < str.length(); i++)
	    {
	    	char c = str.charAt(i);
	        if (c == LeftParenthesis){
	        	items.push((int)str.charAt(i));
		        count ++;
		        left++;
	        } 
	        else if (c == RightParenthesis)
	        {
	            items.pop();
	            left--;
	        }
	    }
	    if(left != 0){
	    	return -1;
	    }
	    return count;
	}
}
    原文作者:括号匹配问题
    原文地址: https://blog.csdn.net/qq_30507287/article/details/52599009
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞