括号匹配代码实现--通过栈实现
来源:互联网 发布:淘宝企业店发布产品 编辑:程序博客网 时间:2024/06/06 00:18
很久没有看数据结构和算法相关的内容了,今天偶然看到有人问这个问题,就使用C写了一段代码,实现括号匹配。该程序修改下,可以设计成通用的字符串匹配函数。具体看个人是怎么设计的。
偶尔确实需要练练手,不然一些方法真很容易忘记。编写的代码如下。
using namespace std;//假定bracketsStr只包含大 中 小括号BOOL BracketsIsMatch(char *bracketsStr,int *noMatchIndex){if(!bracketsStr){*noMatchIndex = -1;return TRUE;}stack<char> bracketStack;int len = strlen(bracketsStr);for(int i=0;i<len;i++){//左括号,入栈if('(' == bracketsStr[i] || '[' == bracketsStr[i] || '{' == bracketsStr[i]){bracketStack.push(bracketsStr[i]);continue;}//右括号,栈为空,不匹配if(bracketStack.empty()){*noMatchIndex = i;return FALSE;}//右括号,栈顶出栈char topBracket = bracketStack.top();bracketStack.pop();if( ('(' == topBracket && ')' == bracketsStr[i]) ||('[' == topBracket && ']' == bracketsStr[i]) ||('{' == topBracket && '}' == bracketsStr[i]) ){continue;}*noMatchIndex = i;return FALSE;}if(!bracketStack.empty()){*noMatchIndex = len-1;return FALSE;}*noMatchIndex = -1;return TRUE;}int main(int argc,char *argv[]){int noMatchIndex = 0;char *p = "()(){[(]}";if(!BracketsIsMatch(p,&noMatchIndex) && noMatchIndex != -1){printf("No Match,index = %d,char = %c\r\n",noMatchIndex,*(p+noMatchIndex));}else{printf("Match ... \r\n");}return 0;}
0 0
- 括号匹配代码实现--通过栈实现
- 通过栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- 括号匹配---栈实现
- 栈实现括号匹配
- 栈实现括号匹配
- 括号匹配,栈实现
- 栈实现括号匹配
- C/C++数据结构通过顺序栈实现括号()匹配算法
- 链栈实现括号匹配
- 括号匹配(栈实现)
- 用栈实现括号匹配
- 括号匹配问题--栈实现
- 栈的实现-括号匹配
- java栈实现括号匹配
- 一些小知识点
- H264码流结构分析
- 使用JDK生成Java的客户端
- Mac下搭建svn服务器和XCode配置svn
- Java加密技术(八)
- 括号匹配代码实现--通过栈实现
- 4位随机验证码的生成
- 这20个正则表达式,让你少写1,000行代码
- nodejs图片处理工具gm用法
- 网页中通过swfobject插入Flash动画以及设置透明
- 关于函数那些事--C语言学习(1)
- Android的EditText超出字数限制,给用户提示
- [leetcode]114. Flatten Binary Tree to Linked List
- Java加密技术(九)