博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codewars第八天–Valid Braces
阅读量:4303 次
发布时间:2019-05-27

本文共 1857 字,大约阅读时间需要 6 分钟。

Codewars第八天–Valid Braces

题目描述:

这道题是常见的不同括号之间的匹配问题。给定一个括号序列,给出他是否匹配的结果,匹配则返回True ,否则返回False
例如:

"(){}[]"   =>  True"([{}])"   =>  True"(}"       =>  False"[(])"     =>  False"[({})](]" =>  False

代码如下:

def validBraces(string):  result = []  for i in string:      if i in "({[":          result.append(i)      elif len(result) != 0:          if (i == ')') & (result[-1] == '('):              result.pop()          elif (i == '}') & (result[-1] == '{'):              result.pop()          elif result[-1] == '[':              result.pop()  if len(result) == 0:      return True  else:      return False

有一个非常简单的做法如下,不需要额外的栈来存储:

def validBraces(s):  while '{}' in s or '()' in s or '[]' in s:      s=s.replace('{}','')      s=s.replace('[]','')      s=s.replace('()','')  return s==''

但是这个代码如果只有右括号) ,就会出现错误的判断,在codewar里面没有这样的实例,所以忽略了这一点。

改进代码如下:

def validBraces(string):  result = []  for i in string:      if i in "({[":          result.append(i)      elif len(result) != 0:          if (i == ')') & (result[-1] == '('):              result.pop()          elif (i == '}') & (result[-1] == '{'):              result.pop()          elif result[-1] == '[':              result.pop()      else:          return False  if len(result) == 0:      return True  else:      return Falseprint(validBraces("))"))

这里也没有考虑有字母的情况,如果加上了字母,例如test() 。则该代码会出错。继续修改为:

def validBraces(string):  result = []  for i in string:      if i in "({[":          result.append(i)      elif len(result) != 0:          if (i == ')') & (result[-1] == '('):              result.pop()          elif (i == '}') & (result[-1] == '{'):              result.pop()          elif result[-1] == '[':              result.pop()      elif i not in "(){}[]":          continue      else:          return False  if len(result) == 0:      return True  else:      return Falseprint(validBraces("ttt(test()"))

转载地址:http://kqmws.baihongyu.com/

你可能感兴趣的文章
Linux常用命令002之搜索命令locate、whereis、which、find、grep
查看>>
oop_day03_内存管理、引用类型数组
查看>>
Java小游戏之打飞机(二)
查看>>
oop_day04_继承、重写_20150812
查看>>
Java笔试面试题006
查看>>
oop_day05_package、public、static、final、内部类
查看>>
oop_day06_抽象类、接口_20150814
查看>>
Java笔试面试题007
查看>>
Java 抽象类与接口的区别
查看>>
oop_day07_多态_20150815
查看>>
Java笔试面试题008
查看>>
Java之面向对象详细总结
查看>>
Java笔试面试题009
查看>>
Java笔试面试题010
查看>>
【JavaSE】day01_ API文档 、 字符串基本操作
查看>>
写给java程序员的一封情书
查看>>
【JavaSE】day02_正则表达式 、 Object 、 包装类
查看>>
【Java】Java小游戏之Shoot游戏源码及详解
查看>>
【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection
查看>>
【JavaSE】day04_Collection_Iterator_新循环_泛型
查看>>