LeetCode--20.有效的括号

时间:2021-11-04 06:19:46

有效的括号

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."