程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Leetcode 棧 Valid Parentheses

Leetcode 棧 Valid Parentheses

編輯:C++入門知識

Leetcode 棧 Valid Parentheses


Valid Parentheses

Total Accepted: 17916 Total Submissions: 63131My Submissions

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.


題意:有三對括號'('和')','['和']','{'和'}',判斷給定的括號字符串是否匹配

思路:用棧

1.遇到左括號就壓棧

2.遇到右括號就判斷棧頂的括號和當前的括號是否是一對,如果棧為空或不匹配,說明整個字符串的括號不匹配,如果匹配,則將棧頂括號出棧

3.如果最終棧中的元素為0,則說明字符串匹配,否則不匹配

復雜度:時間O(n),空間O(n)

class Solution:
# @return a boolean
def isValid(self, s):
if s == '': return True
stack = []
left = '([{';right = ')]}'
for c in s:
if c == '(' or c == '[' or c =='{':
stack.append(c); continue
for i in xrange(3):
if c == right[i]:
if not stack or stack[-1] != left[i]:
return False
else:
stack.pop(); continue
return not stack

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved