双针模型:验证括号,特殊case处理
生活随笔
收集整理的這篇文章主要介紹了
双针模型:验证括号,特殊case处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們知道雙針:一般形式,兩個指針都從左到右掃描,或者一頭一尾兩邊朝中間掃描,或者在兩個數(shù)組里掃描
驗證括號,這個問題:一個指針掃描當前數(shù)組,另一個指針指向的是棧頂元素,也是雙針模型的一種變形。
從這里例子,我們還需要學習一下,編碼完畢之后,注意檢查特殊的case,讓程序perfect!!
代碼實現(xiàn)如下:
# -*- coding: utf-8 -*-# 用于右括號和左括號匹配 def left(a):if a == '}':return '{'if a == ']':return '['if a == ')':return '(' # 驗證括號 def checkNotation(arr):num = len(arr)# 特殊case處理if num == 0:return False# 用于存放左括號stack =[]# 遍歷所有的元素for pos in range(num):# 遇到左括號,就直接放入棧里if arr[pos] =='{' or arr[pos] =='[' or arr[pos] =='(':stack.append(arr[pos])# 遇到右括號,考慮是否匹配 else :# 把棧頂?shù)脑睾彤斍暗氖欠衿ヅ?#xff0c;匹配的話,彈出棧頂元素,消除# 判斷stack是否為空為特殊case處理if stack and stack[-1] == left(arr[pos]):stack.pop()else:return False# 特殊case處理 # if stack: # return False # else: # return True# 上述4行可以簡化成如下return not stackspecialCase = [')',')'] print(checkNotation(specialCase)) tureCase = ['{','[',']','(',')','}'] flaseCase = ['{','[',']','(',']','}'] print(checkNotation(tureCase)) print(checkNotation(flaseCase))runfile('D:/share/test/check_().py', wdir='D:/share/test') False True False總結
以上是生活随笔為你收集整理的双针模型:验证括号,特殊case处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 合并数组:双针模型,原地实现
- 下一篇: 寻找数组变化:树形结构,分治模型