Python 用栈判断括号匹配

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from pythonds.basic.stack import Stack
def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol =symbolString[index]     #左边括号入栈
        if symbol == ‘(‘:
            s.push(symbol)
        else:       #如果栈提前为空,则表示前面匹配成功,后面没有匹配成功
            if s.isEmpty():
                balanced = False       #右边括号出栈
            else:
                s.pop()
        index += 1
    if balanced and s.isEmpty():
        return True
    else:
        return False

print(parChecker(‘()())‘))
print(parChecker(‘()()()‘))
print(parChecker(‘((()())())‘))

原文地址:https://www.cnblogs.com/boluo007/p/10117146.html

时间: 2024-09-30 10:29:53

Python 用栈判断括号匹配的相关文章

(编程训练)再回首,数据结构——(升级版)使用栈判断括号匹配

点击打开 基础版 最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会. 希望这些能提供给初学者一些参考. 在VC++6.0下可运行,当初还写了不少注释. /* ********************************************************** * 3-2 * 设在一个算术表达式中允许使用3种括号:圆括号"(".")",方 * 括号"["."]",花括号"

栈的应用-判断括号匹配

栈的一个典型应用就是可以用来协助分析表达式的括号是否匹配.括号可以延伸到任何成对出现的界定符,例如引号,书名号等. 接下来给出程序实现: 第一部分给出的是堆栈的插入,删除等操作对应的实现: 1 public class StackChar 2 { 3 private int maxSize;//堆栈数组大小 4 private char [] stackArray; 5 private int top;//堆栈顶 6 public StackChar(int maxSize) 7 { 8 thi

imooc数据结构探险-栈篇 栈应用括号匹配二 由群友启发改良james_yuan老师算法

如图所示 引用群友内容 //老师代码有点麻烦了,不用声明两个mystack的,直接判断是否是左括号, //是的话就在mystack中push另一半括号:如果是右括号且又不是需要的括号, //就直接打印不匹配,如果是需要的右括号,就pop掉左括号.最后看mystack中栈顶是否为0,为0则打印括号匹配 /* 老师最后一点其实错了,default 其实没有必要写,只要把pNeedStack->pop(currentNeed)改为 if(!pNeedStack->pop(currentNeed))

数据结构--利用栈实现括号匹配

/*下午打球去了,虐菜了*/ <pre name="code" class="cpp">#ifndef _MATCH_H_ #define _MATCH_H_ #include<iostream> #include<string.h> #include<assert.h> using namespace std; typedef char ElemType; #define STACK_INIT_SIZE 50 typ

第一篇博客——利用“栈”进行括号匹配的算法

bool BracketsCheck(char *str){ InitStack(S); int i=0; while(str[i]!='\0'){ switch(str[i]){ case'(':Push(S,str[i]);break; case'[':Push(S,str[i]);break; case'{':Push(S,str[i]);break; case')': Pop(S,e); if(e!='(')return false; break; case']': Pop(S,e);

顺序栈判断括号是否匹配

/*Sample Input sin(20+10) {[}] Sample Output yes no*/ #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE

栈之括号匹配

#include<stdio.h> #include<string.h> #define MaxSize 100 void ExpIsCorrect(char exp[],int n); typedef char DataType; typedef struct { DataType stack[MaxSize]; int top; }SeqStack; void StackInitiate(SeqStack *s)//初始化 { s->top=0; } int StackN

JAVA栈实例—括号匹配

1 import java.util.Stack; 2 3 public class test { 4 public static void main(String[] args){ 5 System.out.print(isStringBalanced("asdasd)d")); 6 } 7 8 public static boolean isStringBalanced(String string){ 9 final char openrb = '('; //定义常量 10 fin

栈(括号匹配)

假设一个算术表达式中可以包含三种括号:圆括号"("和")",方括号"["和"]"和花括号"{"和" ",且这三种括号可按任意的次序嵌套使用(如:-[-{- -[-]-]-[-]-(-)-).编写判别给定表达式中所含括号是否正确配对出现的算法.输出结果YES 或者 NO. Input 5+{[2X5]+2} Output YES Sample Input 8-[{2+7]} Sample