Python辅助栈法【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——20. 有效的括号

举报
是Dream呀 发表于 2022/01/26 23:58:45 2022/01/26
【摘要】 📢📢📢📣📣📣 🐸Hello,大家好我是Dream,欢迎大家来到刷题乐园😜😜😜 🐹游园须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀 🐹导游主要使...

在这里插入图片描述

📢📢📢📣📣📣
🐸Hello,大家好我是Dream,欢迎大家来到刷题乐园😜😜😜

🐹游园须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀

🐹导游主要使用Python语言,同时欢迎其他语言的小伙伴进来玩耍☀️☀️☀️
🐹游园过程中,如果发现有错误的话,欢迎大家评论区及时斧正❤️❤️❤️

🐹最后,祝大家游园愉快,一起加油进步🍺🍺🍺

💦乐园描述

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true
示例 3:

输入:s = "(]"
输出:false
示例 4:

输入:s = "([)]"
输出:false
示例 5:

输入:s = "{[]}"
输出:true
 

提示:

1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成

💦游园准备

栈先入后出特点恰好与本题括号排序特点一致,即若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 stack 仍然为空;

建立哈希表 dic 构建左右括号对应关系:key 左括号,value 右括号;
这样查询 22个括号是否对应只需 O(1) 时间复杂度;建立栈 stack,遍历字符串 s 并按照算法流程一一判断。
第一次遍历的时候,如果括号是右括号的话,直接退出,返回False
为了防止进栈的括号比出栈的括号多,最后进行len(stack),如果和刚开始一样为空,返回True,反之返回False。
return len(stack) == 0

💦开始游玩

# -*-coding:utf-8 -*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
def pipei(s):
    dic = {'{': '}',  '[': ']', '(': ')'}
    stack = []
    for c in s:
        if c in dic:
            stack.append(c)
        elif len(stack)==0:
            return False
        elif dic[stack.pop()] != c:
            return False
    return len(stack) == 0
print(pipei("()[]{}"))
print(pipei(")([]{}"))

在这里插入图片描述

💦游玩总结

The stage extends as far as the heart goes~加油!❤️❤️❤️

**🏅今天是我打卡的第十二天,希望每天都能见到最棒的你🏅**

📢📢📢最后的福利

🍋🍋🍋最后一点小福利带给大家:如果想快速上手python的小伙伴们,这个详细整理PPT可以迅速帮助大家打牢python基础,需要的小伙伴们可以下载一下 Python入门基础教程全套+小白速成+学不会来找我! 🍻🍻🍻
还有自制表白神器,需要自取:
Python表白神器,源码+解析+各种完美配置+浪漫新颖 🍻🍻🍻
在这里插入图片描述

🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~在这里插入图片描述

文章来源: xuyipeng.blog.csdn.net,作者:是Dream呀,版权归原作者所有,如需转载,请联系作者。

原文链接:xuyipeng.blog.csdn.net/article/details/119981118

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。