括号平衡和正确嵌套

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

        例如,字符串"((())())()"包含正确嵌套双括号,其中所述字符串),(),(和())没有正确匹配。给出了一个算法,   如果一个字符串包含正确的嵌套和平衡括号则返回匹配括号的个数,否则返回-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;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值