中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現代數式括號有效性檢驗

發布時間:2020-10-29 16:05:17 來源:億速云 閱讀:158 作者:Leah 欄目:開發技術

python實現代數式括號有效性檢驗?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

思路:

利用棧實現代數式中括號有效行的的檢驗:

代碼:

class mychain(object): #利用鏈表建立棧,鏈表為父類
 length=0
 def __init__(self,value=None,next=None):#創建鏈表,長度并不包含頭部
  self.value=value
  self.next=next
  #mychain.length=mychain.length+1
 def append(self,value=None):
  while self.next!=None:
   self=self.next
  self.next=mychain(value)
  mychain.length=mychain.length+1 #追加時,鏈表長度增加
 def travle(self):#遍歷鏈表
  print(self.value)
  if self.next!=None:
   self.next.travle()
 def drop (self,value):#刪除特定值的第一個匹配節點
  while self.next!=None:
   if self.next.value!=value:
    self=self.next
   else:
    self.next=self.next.next
    mychain.length=mychain.length-1 #刪除時,鏈表長度減小
    break
 def pop(self):#刪除未節點
  if self.next!=None:#并不刪除頭結點
   while self.next.next!=None:
    self=self.next
   self.next=None
   mychain.length=mychain.length-1#彈出為節點,并減小長度,頭結點不彈出



class stock(mychain):#棧類
 bottom=None   #棧底
 top=None     #棧頂
 n_count=0    #計數
 def Max(self):  #占中最大值
  if self.next!=None:
   tmp = self.next.value
   while self.next.next!=None:
    self=self.next
    if self.next.value>tmp:
     tmp=self.next.value
   return tmp
  else:
   print('棧為空!')
 def Min(self):#棧中的最小值
  if self.next!=None:
   tmp = self.next.value
   while self.next.next!=None:
    self=self.next
    if self.next.value<tmp:
     tmp=self.next.value
   return tmp
  else:
   print('棧為空!')

 def push(self,value): #壓棧
  while self.next != None:
   self = self.next
  self.next = mychain(value)
  stock.top=self.next
  stock.length=stock.length+1
  stock.n_count=stock.n_count+1
 def __init__(self,value='',next=None):
  self.value=value
  self.next=next
  stock.bottom=self
  stock.top=self
  #stock.n_count=stock.n_count+1
  #stock.length=stock.length+1
 def append(self,value=''):#取消追加函數
  print('請使用Push()!')
 def pop(self):
  if self.next!=None:#并不刪除頭結點
   while self.next.next!=None:
    self=self.next
   self.next=None
   stock.top=self
   stock.length=stock.length-1#彈出為節點,并減小長度,頭結點不彈出
class solution(object):
 def validationofbrackets(self,astr=''):#檢驗串中的括號合法性
  braketsstock=stock()
  for i in astr:
   if i in ['{','(','[']:
    braketsstock.push(i)
   else:
    if i==')':
     if braketsstock.top.value=='(':
      braketsstock.pop()
     else:
      return False
    elif i==']':
     if braketsstock.top.value=='[':
      braketsstock.pop()
     else:
      return False
    elif i=='}':
     if braketsstock.top.value=='{':
      braketsstock.pop()
     else:
      return False
    else:
     pass
  print(astr)
  print(braketsstock.length)
  if braketsstock.length==0:
   return True
  else:
   return False

運行:

bstr='([{((({{}})))}]){{}}{{}{}{}[][]()(123)(((sin5)))}'
f=solution()
print(f.validationofbrackets(bstr))

關于python實現代數式括號有效性檢驗問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绿春县| 正安县| 温州市| 内乡县| 西丰县| 墨江| 治县。| SHOW| 襄城县| 内丘县| 铜山县| 仙桃市| 绥德县| 哈巴河县| 仙居县| 新乡县| 田阳县| 乌苏市| 东海县| 托克托县| 当涂县| 河间市| 青河县| 安宁市| 邵阳县| 新干县| 唐山市| 安西县| 阿坝县| 广丰县| 富锦市| 玛沁县| 赣州市| 九龙城区| 泸定县| 乌海市| 邻水| 股票| 永安市| 长寿区| 罗平县|