`

字符串中左右括号匹配判断

 
阅读更多

一、要求:

判断一个字符串中的小括号是否匹配。例如,字符串“((())())”中的小括号匹配,而“)()”中的小括号不匹配。如果匹配则提示匹配,如果不匹配则提示第一个不匹配的括号的位置。

二、 效果:

clip_image002

三、思路:

得到字符串,从头开始,一个一个字符判断。

(1) 如果是左括号则压入栈中。

(2) 如果是右括号,则将一个左括号从栈中弹出,匹配一对。若此时栈中无元素,那么这个右括号没有匹配的左括号。

最后,如果栈不为空,则有左括号没有匹配。

四、核心代码:

:

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->//BracketMatch.cpp
//judge a string whether is brackets match['(' and ')'] string,
//while not match,return first position
//powered by alan
//2010.10.14

#include
<iostream>
#include
<string>
#include
<stack>

using namespace std;

int main() {
//define data
string brackets = "";
stack
<char> bracketStack;
char tmp;
enum Res{matched,nMatch}res;
res
= matched;
int bottom = 0;

//get input
cout<<"输入需要匹配的括号串"<<endl;
cin
>>brackets;

//judge
int i;
for(i = 0; i < brackets.length(); i++) {
if(brackets[i] == '(') {
//1.left bracket
bracketStack.push('(');
if(bracketStack.size() == 1) {
bottom
= i;
}
}
else if (brackets[i] == ')') {
//2.right bracket
if(!bracketStack.empty()) {
tmp
= bracketStack.top();
bracketStack.pop();
}
else {
res
= nMatch;
//move to wrong position
i++;
break;
}
}
//ingore non bracket
}

//have '(' not match
if(!bracketStack.empty()){
res
= nMatch;
//get the first not match
i = bottom + 1;
}

switch(res) {
case matched:
cout
<<"括号字符串匹配!"<<endl;
break;
case nMatch:
cout
<<""<<i<<"个括号字符串不匹配!"<<endl;
break;
}

return 0;
}











分享到:
评论

相关推荐

    括号匹配(字符串d).cpp

    请写一个程序,判断给定表达式中的括号是否匹配,既左右括号顺序和数量都匹配。 输入说明 输入为一个表达式字符串,长度不超过50。 输出说明 对输入的表达式,若其中的括号是匹配的,则输出“yes”,否则...

    数据结构中的括号匹配算法 C语言版

    总结来说,"数据结构中的括号匹配算法 C语言版" 主要涉及了数据结构中的栈和字符串处理技巧,通过遍历字符串并利用栈来判断括号是否正确匹配。在C语言中,可以借助数组或链表实现栈,并结合`switch`或`if`语句进行...

    C++表达式括号匹配配对判断问题

    括号匹配的表达式,表达式中的左右括号在类型和数目上均匹配。匹配判别发生在右括号出现时,且被匹配的左括号应该是距离该右括号最近被输入的,而不是最先被输入的括号,即“先入后匹配”。所以,借用栈来解决问题。...

    基于python判断字符串括号是否闭合{}[]()

    括号匹配的基本问题在于确认字符串中的每一个左括号都能找到对应的一个右括号,并且左右括号的类型要匹配。比如在字符串 "{[()]}()}" 中,最外层的大括号是匹配的,但中间的圆括号没有闭合,而最外层的大括号内的小...

    左右括号_括号匹配_

    本文将深入探讨“左右括号匹配”这一主题,并以C语言为例,阐述其实现方法。 首先,我们要理解什么是括号匹配。括号匹配是指检查一个字符串中的开括号(如"("、"["、"{")是否都有对应的闭括号(")"、"]"、"}")来...

    括号匹配栈的应用

    在这个例子中,`isMatching`函数实现了括号匹配的逻辑,`isPair`函数用于判断左右括号是否成对。在`main`函数中,我们测试了一个包含正确括号匹配的字符串。 此外,`括号匹配.exe`文件可能是上述C++代码编译后的可...

    左右括号匹配(栈实现C语言)1

    这里我们讨论的是如何使用C语言实现一个栈来解决这个问题,即判断给定的字符串是否包含有效的括号匹配。 题目要求我们检查一个字符串,它只包含六种类型的括号:'(', ')', '{', '}', '[', ']'. 如果字符串中的括号...

    判断左右括号是否匹配

    问题:有一个数组里面存放了很多的字符,需要判断这一串字符里面的括号是否匹配。

    算术表达式括号匹配实验

    假设一个算术表达式中包括圆括号、方括号和花括号三种形式的括号,判别表达式中括号是否正确配对。 ...1、左右括号匹配正确 2、左右括号配对次序不正确; 3、右括号多于左括号 4、左括号多于右括号

    用栈实现的括号匹配

    在编程领域,括号匹配是一项基础且重要的任务,主要用于验证表达式中左右括号的正确性。例如,我们在计算数学表达式或者解析编程语言语法时,都需要确保括号的开闭对应无误。本项目使用C++语言,通过栈这种数据结构...

    stack实现括号匹配

    这里的“stack实现括号匹配”是指利用栈这种数据结构来判断一个字符串中的左右括号是否正确配对。栈是一种后进先出(LIFO)的数据结构,非常适合用于解决此类问题。 首先,我们需要理解栈的基本操作:压入(push)...

    利用栈的括号匹配算法 C语言数据结构

    这段代码实现了括号匹配算法,其中`match`函数检查左右括号是否配对,主程序使用栈来检查整个字符串的括号匹配情况。 6. **拓展与优化** - 可以将不同类型的括号映射到数字或其他符号,简化匹配逻辑。 - 为了...

    利用栈实现括号匹配

    括号匹配是计算机科学中的一个基本问题,它涉及到判断一段文本中的括号(如圆括号`()`、方括号`[]`、花括号`{}`、尖括号`&lt;&gt;`等)是否正确配对。例如,字符串`{[()()]}`是正确匹配的,而`{[(])}`则不是。 ### 栈的...

    括号匹配程序

    此外,括号匹配问题也可以拓展到更复杂的数据结构,如树和图,例如在树的遍历过程中,可以使用括号匹配的概念来判断二叉树是否是平衡的。在平衡二叉树中,左子树和右子树的高度差不超过1,且每个节点的左右子树都是...

    括号匹配 C语言 简单实现

    在括号匹配问题中,利用栈的这一特性可以很好地解决左右括号的匹配问题。 #### 动态内存分配 C语言中,可以通过`malloc`函数动态地分配内存空间。这对于处理未知大小的数据非常有用,例如在本例中,我们使用`...

    c语言实现的括号匹配算法 无括号算术表达式处理算法

    void BracketMatch(char *str) /* str[]中为输入的字符串,利用堆栈技术来检查该字符串中的括号是否匹配*/ { SeqStack S; int i; char ch; InitStack(&S); for(i=0; str[i]!='\0'; i++) /*对字符串中的...

    数据结构栈的应用——括号匹配

    括号匹配是编程中的一种基本问题,它涉及到判断一个字符串中的左右括号是否正确配对。通常涉及的括号包括圆括号"()"、方括号"[]"和大括号"{}"。正确的匹配规则是每对左括号必须有一个与之相对应的右括号,并且它们...

    括号匹配使用的c语言版

    3. **循环与条件判断**:遍历输入的字符串,每遇到一个字符,根据其类型(开括号或闭括号)执行相应的栈操作,并通过条件判断检查括号是否匹配。 4. **错误处理**:如果遇到未关闭的括号或者非法的括号组合,程序应...

    括号匹配代码

    括号匹配是计算机科学中的一个经典问题,常用于衡量程序设计者对于数据结构和算法的理解能力。在本篇文章中,我们将详细介绍一个基于 C/C++ 的括号匹配实现案例,并对其进行深入分析。 #### 二、代码解析 该代码的...

    js代码-给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。

    在JavaScript编程中,判断一个字符串是否为有效的括号序列是一个常见的问题,主要涉及到字符串处理和栈数据结构的应用。这个问题通常被称为“括号匹配”或“平衡括号”。在这个场景下,我们有两个关键的要求来确定一...

Global site tag (gtag.js) - Google Analytics