Java 栈 如何实现括号匹配、

hanlei_1222 2011-09-06 11:11:31
求教育、
...全文
982 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanlei_1222 2011-09-07
  • 打赏
  • 举报
回复
谢谢、已解决、
念茜 2011-09-06
  • 打赏
  • 举报
回复
匹配算法的思想是:

首先将第一个括号压入栈,然后从第二个括号开始,如果与栈顶元素能匹配,能将栈顶元素弹出;如果不匹配,则将该元素压入栈中。

当带匹配字符串遍历结束后,检查栈是否为空,为空则表示匹配成功了,如果非空则表示还有括号未能匹配,即该字符串匹配失败。


package ds.linerlist;
import java.util.Stack;
/**
* 使用栈实现字符串的括号匹配检查。
* @author <a href="mailto:bao.yiming@live.cn" mce_href="mailto:bao.yiming@live.cn">Bao Yiming</a>
*/
public class BracketMatch {
/**
* 进行匹配的算法。
* @param str 待检查的字符串。
* @return
*/
public static boolean match(String str) {
Stack stack = new Stack(); // 定义一个存放括号的栈。
char[] ca = str.toCharArray(); // 将字符串转为字符数组以便对其遍历。
stack.push((Character) ca[0]); // 首先将第一个字符压入栈中。
/*
* 从第二个字符开始,依次与栈中字符匹配。
* 成功则将栈顶元素弹出。
* 失败则将字符数组中的当前字符压入栈中。
*/
for (int index = 1; index < ca.length; ++index) {
Character c1 = (Character) stack.peek();
Character c2 = ca[index];
if ((c1.equals('(') && c2.equals(')'))
|| (c1.equals('[') && c2.equals(']'))) {
stack.pop();
} else {
stack.push(c2);
}
}
return stack.empty();
}
}



详细:
http://blog.csdn.net/baoyiming1991/article/details/6272256

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧