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

有效字符串需满足:

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

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"输出: true

示例 2:

输入: "()[]{}"输出: true

示例 3:

输入: "(]"输出: false

示例 4:

输入: "([)]"输出: false

示例 5:

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

分析:

  1. 字符串一定是偶数个
  2. 第一个出现的字符一定是开括号
  3. 第一个出现的闭括号一定是与最近的开括号匹配
  4. 初始化一个数组
  5. 处理表达式的每个括号,当遇到开阔号,就放入到数组中,当遇到闭括号时检查 与数据中的最后一个开括号是否匹配,如果匹配就把这个开括号从数组移除,并继续处理,如果不匹配则表达式不匹配
  6. 最后如果过这个数组还有元素,说明表达式无效

解:

class SolutionBracket: def isValid(self, s: str): """ :param s: :return: """ mapps = {')': '(', ']': '[', '}': '{'} stack = [] if len(s) % 2 == 0 and s[0] in mapps.values(): for i in s: if i in mapps.values(): stack.append(i) else: elma = stack.pop() if stack else '#' if elma != mapps[i]: return False else: return False return not stack​​​if __name__ == '__main__': b = "()[]{}" f = "{{{}" so = SolutionBracket() print(so.isValid(g))

拓展

如果字符串是一个类型的括号,可以用计数的方式实现,这个实现比较简答

  1. 初始化计数器为0
  2. 迭代字符串,遇到开括号计数器+1,否则-1
  3. 当计数器不为零的时候说明不是有效的表达式

解:

class SolutionBracket: def isValid(self, s: str,c:str): """ :param s:传入的字符串 :param c: 传入的括号类型如:'(','[','{' :return:  """ num=0 for i in s: if i==c: num+=1 else: num-=1 return not numif __name__ == '__main__': b = "()()()" f = "((((())))" so = SolutionBracket() print(so.isValid(f,'('))

java判断括号是否闭合_【python每日一练】有效括号相关推荐

  1. Python每日一练0023

    问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法 >>> import os > ...

  2. python 编程一日一练-python每日一练

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...

  3. Python每日一练0004

    问题 如何保存迭代对象的最后N个元素 例如保存列表['a', 'b', 'c', 'd']的最后2个元素 或者保存某个迭代器对象的最后5个元素 解决方案 对于列表.元组这样的数据结构,可以使用切片来很 ...

  4. python 编程一日一练-Python每日一练0022

    问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...

  5. python 编程一日一练-Python每日一练0013

    问题 现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在. 解决方案 使用collections库的ChainMap类,可以快速的将多个d ...

  6. Python每日一练0018

    问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. Python的float类型是存在误差的 >>> a = 1.1 >>> b = 2.2 & ...

  7. python每日一练名片管理程序_Python每日一练0022

    问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...

  8. java判断括号是否闭合_用 java 判断 括号是否完全匹配

    用 java 判断 括号是否完全匹配: package emp; import java.util.Stack; public class Parentheses { public static vo ...

  9. python怎么快速打括号_中括号怎么打-【python每日一练】有效括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...

最新文章

  1. 使用git更新github上的开源项目
  2. java中1代表什么_请问java中81是什么意思?
  3. poj 3481 平衡树
  4. asm管理的dg数据文件缺失的处理方法
  5. launch mode 应用场景
  6. Sentry UDFWhiteList bug分析
  7. 排序算法之——插入排序
  8. html文本分类输出,构建中文网页分类器对网页进行文本分类
  9. 微软 azure_在Microsoft Azure上运行Eclipse MicroProfile
  10. highcharts x轴 按照时间 datetime排序
  11. 16 岁赚到 20 万美元,我的编程之路始于对代码的热爱
  12. PHP游戏源码寻仙纪,在线多人文字游戏-可联机
  13. [iOS] 通知详解: iOS 10 UserNotifications -- 附加包Media Attachments
  14. java 追加文件换行_java 追加换行txt
  15. php人民币转换,人民币大小写转换(PHP版)
  16. utf-8 汉字对照表
  17. Mobaxterm 中文输入Backspace按键问题
  18. sqlzoo刷题——select from nobel(诺贝尔获奖查询)
  19. Papi酱: 左手奶瓶右手尿布× 左手papitube右手娱乐圈√
  20. 这款养蛙游戏火爆了朋友圈,游戏开发程序员已赚翻!

热门文章

  1. Oracle PL/SQL中如何使用%TYPE和%ROWTYPE
  2. Nginx的页面中文乱码解决方法
  3. ios序列化与反序列化,本地化
  4. 修改注册表 为右键添加快捷命令
  5. 解决开机自检D盘问题
  6. linux网络相关常见问题
  7. Log4net 在framework Client中编译失败
  8. 将Qt工程文件转成VC工程文件的小工具
  9. 彩信手机报受代表好评
  10. SpringCloud教程- 断路器(Hystrix)(SpringCloud版本Finchley)