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

括号是否匹配 java实现

2014-10-28 14:39 295 查看
括号是否匹配时比较经典的算法题目,理解起来可能有点麻烦,但当真正理解以后会发现很简单。

原理就是利用栈的模式,现将左括号压进栈,当出现右括号时,判断是否和最近一个压进栈的相匹配,当匹配时将最近一个压进栈的左括号拿出,进行下一个判断,如果不匹配则不成功,直接退出。

具体代码如下:

package com.junl.scott.brackets;

import java.util.Stack;

public class BracketsMatch
{

public static void main(String[] args)
{
System.out.println(BracketsMatch.partenMatch("(1+2)*(1+2)=9"));
}

public static boolean partenMatch(String exp)
{
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < exp.length(); i++)
{
switch (exp.charAt(i))
{
case '{':
case '(':
case '[':
stack.push(exp.charAt(i));
break;
case '}':
case ')':
case ']':
if (stack.isEmpty())
return false;
if (!BracketsMatch.match(stack.pop(), exp.charAt(i)))
return false;
break;
}
}
if (!stack.isEmpty())
return false;
return true;
}

public static boolean match(char strright, char strleft)
{
switch (strright)
{
case '{':
if (strleft == '}')
return true;
break;
case '(':
if (strleft == ')')
return true;
break;
case '[':
if (strleft == ']')
return true;
break;
default:
break;
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: