导航页-LeetCode专题-Python实现

相关代码已经上传到github:https://github.com/exploitht/leetcode-python

文中代码为了不动官网提供的初始几行代码内容,有一些不规范的地方,比如函数名大小写问题等等;更合理的代码实现参考我的github repo

1、读题

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

这是经典的栈相关的题,凡是学习数据结构,一般书籍提到栈都会提及括号匹配,解析括号组成的字符串,如果是左括号就入栈,如果是右括号就出栈,看是否匹配。结束的时候再判断一发栈是否为空就行。

2、解题

这道题比较简单,上面读题已经讲到用栈来实现,代码逻辑很简单,如下:

class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
# 循环读取字符串s,如果是左括号则进栈,如果是有括号则出栈
# 出栈的时候栈不能为空,循环结束的时候栈需要为空
pars = {'(': 1, '[': 2, '{': 3, ')': -1, ']': -2, '}': -3}
stack = list()
for par in s:
if pars.get(par) > 0:
stack.append(par)
else:
if len(stack) > 0:
if pars.get(stack.pop()) == abs(pars.get(par)):
continue
else:
return False
else:
return False
return True if len(stack) == 0 else False

最新文章

  1. 关于C中内存操作
  2. eclipse android工程没有错却出现红叉
  3. Spring中加载xml配置文件的六种方式
  4. IOS-KVO&KVC
  5. python学习之subprocess模块
  6. 弹性布局学习-详解 justify-content(三)
  7. Sqoop 1.99.4 安装
  8. Linq中的常用方法
  9. js动画学习(三)
  10. 201521123091 《Java程序设计》第9周学习总结
  11. Java经典编程题50道之二十九
  12. 色彩转换——RGB & HSV
  13. jsp面试题
  14. uni-app—从安装到卸载
  15. 常用的flex布局
  16. Oracle 10g 使用REGEXP_SUBSTR 分拆字符串 (转)
  17. hive使用python脚本导致java.io.IOException: Broken pipe异常退出
  18. 监督学习Supervised Learning
  19. PHP ==与===的区别
  20. 处理URL传递中文乱码问题

热门文章

  1. HTTP协议头部与Keep-Alive模式详解(转)
  2. 1. Linux系统介绍
  3. 读 Spring实战 遇到的问题记录(一)
  4. JUC笔记
  5. C#一句话判断两个List<T>是否相等
  6. 正则匹配ts的引用
  7. 旧项目Makefile 迁移CMake的一种方法:include Makefile
  8. java学习之路--零碎的知识笔记
  9. laravel-elasticsearch 全文搜索设置
  10. apidoc @apiGroup兼容中文