首页 > 编程语言 >python 有效的括号 多种解法

python 有效的括号 多种解法

时间:2023-12-29 13:36:28浏览次数:26  
标签:False python isValid char 括号 print True 解法

解法一:使用栈 思路:

  1. 创建一个空栈。
  2. 遍历输入字符串的每个字符。
  • 如果字符是左括号('(', '{', '['),则将其推入栈中。
  • 如果字符是右括号(')', '}', ']'),则检查栈是否为空。
  • 如果栈为空,则返回False,因为没有与之匹配的左括号。
  • 如果栈不为空,则弹出栈顶元素,并判断它与当前右括号是否匹配。如果不匹配,则返回False。
  1. 遍历完所有字符后,检查栈是否为空。如果为空,则返回True;否则,返回False。

示例代码如下:

def isValid(s):
    stack = []
    mapping = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in mapping:
            if not stack or stack.pop() != mapping[char]:
                return False
        else:
            stack.append(char)
    return not stack

# 测试示例
print(isValid("()"))  # True
print(isValid("()[]{}"))  # True
print(isValid("(]"))  # False
print(isValid("([)]"))  # False
print(isValid("{[]}"))  # True

解法二:使用计数器 思路:

  1. 使用三个变量count1count2count3分别表示左括号({[的数量,初始值为0。
  2. 遍历输入字符串的每个字符。
  • 如果字符是左括号,则相应的计数器加1。
  • 如果字符是右括号,则相应的计数器减1。
  • 如果任何计数器的值小于0,则返回False,因为出现了右括号比左括号多的情况。
  1. 遍历完所有字符后,检查三个计数器的值是否都为0。如果是,则返回True;否则,返回False。

示例代码如下:

def isValid(s):
    count1 = count2 = count3 = 0
    for char in s:
        if char == '(':
            count1 += 1
        elif char == ')':
            count1 -= 1
        elif char == '{':
            count2 += 1
        elif char == '}':
            count2 -= 1
        elif char == '[':
            count3 += 1
        elif char == ']':
            count3 -= 1
        if count1 < 0 or count2 < 0 or count3 < 0:
            return False
    return count1 == count2 == count3 == 0

# 测试示例
print(isValid("()"))  # True
print(isValid("()[]{}"))  # True
print(isValid("(]"))  # False
print(isValid("([)]"))  # False
print(isValid("{[]}"))  # True

标签:False,python,isValid,char,括号,print,True,解法
From: https://blog.51cto.com/lzning/9026967

相关文章

  • python_使用selenium进行webui测试的浏览器驱动安装步骤
    以chrome浏览器为例。(前提是:python和pycharm安装成功,且能正常运行)1、查看chrome浏览器的版本方式一:打开Chrome浏览器。在浏览器右上角,点击三个点的图标。在弹出的菜单中,选择“设置”。在设置页面中,滚动到底部,点击“关于Chrome”。在关于Chrome页面中,你可以看到C......
  • Python绘画-红太狼是怎样炼成的
    红太狼简介红太狼是狼堡的持有人,出身富裕世家,傲娇暴力女,虽然身为大小姐,但是懂得料理和家务。因为要独自照顾老公灰太狼,所以平时都摆出一副家主的气势。表面上经常用平底锅砸灰太狼,也抱怨灰太狼不如其他狼(尤其是初恋情人小白狼)混得好,但内心其实是很爱灰太狼的,常常安慰在羊村战役中......
  • 【Python高级应用课程设计 】大数据分析——银行客户认购产品预测
    一、选题背景随着大数据时代的到来,银行客户认购产品的预测分析变得越来越重要。在竞争激烈的市场环境中,银行需要更好地了解客户需求,提供更精准的产品推荐和服务,以提高客户满意度和忠诚度。同时,通过预测客户认购产品,银行可以更好地规划产品线和营销策略,提高业务效益和盈利能力......
  • 在Python中,如果你想查找特定的SQLite数据库文件(例如'mydatabase.db'),你可以使用os模块
    这是Python中os.walk()函数的常见用法¹²⁴⁵⁶。os.walk()函数用于递归遍历指定目录及其子目录,并返回一个生成器,每次迭代都会返回一个包含三个元素的元组:当前目录的路径、当前目录下所有子目录的列表和当前目录下所有文件的列表¹²⁴⁵⁶。在fordirpath,dirnames,filenamesi......
  • python实现打扑克方法
    #游戏规则:#一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。##有以下几种牌:#豹子:三张一样的牌,如3张6.#同花顺:即3张同样花色的顺子,如红桃5、6、7#顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子#对子:2张牌一样#单......
  • Miniconda 3 | 出发,探索Python
    介绍Miniconda是Anaconda的精简版本,是一个轻量级的Python包管理工具和环境管理工具。优势和功能主要包括:轻量级和快速安装:Miniconda相比Anaconda更小巧,只包含最基本的工具和包管理功能。安装速度更快,更适合对资源要求较高的环境。包管理:提供conda包管理工具,可......
  • python 删除链表的倒数第 N 个结点 多种解法
    解法一:双指针法这种解法使用两个指针,一个快指针和一个慢指针,它们之间的距离为N。首先,让快指针先移动N步。然后,同时移动快指针和慢指针,直到快指针到达链表末尾。此时,慢指针指向的节点就是要删除的节点的前一个节点。最后,将慢指针的下一个节点指向下下个节点,完成删除操作。defre......
  • python turtle画图练习一
    1. 使用turtle库的函数绘制10层旋状放大的类正方形,提示:类正方形边长从0度方向,边长为1像素开始,每条边长度比前一条边增加2个像素,画笔逆时针旋转91度。效果如下图所示: 2. 使用turtle库的turtle.righ()函数和turtle.circle()函数绘制一个星星图形,圆弧的半径为90......
  • python基础(二)-异常处理
    异常是指程序运行时引发的错误,引发错误的原因有很多,如语法错误、逻辑错误等,若这些错误没有进行处理,将会导致程序终止运行python标准异常异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception......
  • python 读书报告
    蒋彬:以下是使用NumPy、SciPy、Pandas和Matplotlib库进行图像处理的一些示例代码。这些库通常与专用的图像处理库(如OpenCV或Pillow)一起使用,以实现更广泛的图像操作和处理。使用Matplotlib显示图像pythonCopycodeimportmatplotlib.pyplotaspltimportmatplotlib.image......