• LeetCode--20.有效的括号


    有效的括号

    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."
    
    
  • 相关阅读:
    Aviator
    Docker是什么
    vulnhub--SickOs1.1
    vulnhub--HackInOS
    本地浏览器远程访问服务器tensorboard(MobaXterm)
    dogecoin
    python多进程
    gpu
    python调用父类(超类)
    linux更改终端显示颜色(用户名颜色等)
  • 原文地址:https://www.cnblogs.com/glasses/p/10017883.html
Copyright © 2020-2023  润新知