有效的括号
LeetCode-->20.有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: fals
示例 5:
输入: "{[]}"
输出: true
解答:
Python:
def isValid(str):
stack = []
pattern_map = {')':'(',']':'[','}':'{'}
for c in str:
if c not in pattern_map:
stack.append(c)
elif not stack or pattern_map[c] != stack.pop():
return False
return not stack
Java
public boolean isValid(String str){
int length;
do{
length = str.length();
str = str.replace("()","").replace("[]","").replace("{}","");
}while(length != str.length());
return str.length() == 0;
}
Test
'''
**************************
Author: PQ
Date: 2018/7/27
Target: Stack
**************************
'''
class Stack:
'''
实现栈的功能:
_content:序列
_current:包含元素数
_size:栈大小
setempty >将栈置空
isEmpty >判断栈是否为空
setSize >设置栈大小
isFull >判断栈是否满了
push >入栈
pop >出栈
show >显示栈内容
showSpace >显示还剩多少空间
'''
def __init__(self,size = 10):
self._content = []
self._size = size
self._current = 0
def setEmpty(self):
self._content = []
self._current = 0
def isEmpty(self):
if not self._content:
return True
else:
return False
def setSize(self,size):
if size < self._current:
for i in range(size, self._current)[::-1]:
del self._content[i]
self._current = size
self._size = size
def isFull(self):
if self._current == self._size:
return True
else:
return False
def push(self, v):
if len(self._content) < self._size:
self._content.append(v)
self._current = self._current + 1
else:
print("Stack is Full")
def pop(self):
if self._content:
self._current = self._current - 1
return self._content.pop()
else:
print("Stack is empty!")
def show(self):
print self._content
def showSpace(self):
print("Stack can still PUSH",self._size - self._current," elements")
if __name__ == '__main__':
print "Please use me as a module."