第三題 最長括號匹配
滿足如下條件的字串稱為括號匹配的字串: 1. 空字串是括號匹配的字串。 2. 若a是括號匹配的串,則(a)、[a]是括號匹配的字串。 3. 若a、b是括號匹配的字串,則ab也是括號匹配的字串。 例如:()、、()、()()都是括號匹配的字串,而][、[(])則不是。 現在對乙個由「(」、「)」、「[」、「]」括號組成的字串,求出其中最長的括號匹配子串。 字串a的子串是指由a中連續若干個字元組成的字串。 例如,『a』, 『b』, 『c』, 『abc』, 『cab』, 'abcabc』都是abcabc的子串。空串是任何字串的子串。
輸入一行,為乙個僅由「(」、「)」、「[」、「]」組成的非空字串。
輸出一行,乙個數字,表示輸入字串中最長括號匹配子串的長度。
輸入樣例1題中的重點為連續若干個字元,而並非全部的匹配對。([(][()]]()
輸出樣例1
4輸入樣例2
())輸出樣例2
a=
input()
b=x=
c=[0for j in
range
(len
(a))
]#建立乙個目前都為0的列表,如果配對的符號就變成1
for i in
range
(len
(a))
:if a[i]
=='('
or a[i]
=='['
or a[i]
==''
:if b:
#如果b中不為空
d=b[
len(b)-1
]#調取最後乙個左括號
if a[i]
==')'
and d==
'('or a[i]
==']'
and d==
'['or a[i]
=='}'
and d==
'{':
b.pop(
)#配對以後就讓已經配對了的出去,再看前乙個沒辦法配對的
n=ic[n]=1
c[x[
len(x)-1
]]=1
x.pop(
)#因為b中已經出去了,所以x中元素也要彈出
else
:#如果b中為空
b.clear(
)#如果左括號右括號不符合就都刪除,因已經不可能有符合的情況
x.clear()p=
0q=0for i in c:
if i==1:
p=p+
1else
:#如果i不等於1,也就是沒有配對的情況下
if p>q:
q=p#p用來計數,q用來記錄最大的p
p=0#不是總數,而是連續的個數
else
: p=
0if qprint
(p)else
:print
(q)
自定義資料結構(棧 佇列) 括號匹配
第二題 括號匹配 滿足如下條件的字串稱為括號匹配的字串 1.空字串是括號匹配的字串。2.若a是括號匹配的串,則 a a 是括號匹配的字串。3.若a b是括號匹配的字串,則ab也是括號匹配的字串。例如 都是括號匹配的字串,而 則不是。現在對於輸入的字串,判斷它是否是括號匹配的字串。輸入一行,為乙個僅由...
資料結構 自定義佇列
用鍊錶建立佇列 public class linkqueueimplements queue public node e e public node override public string tostring private node head private node tail private...
scala資料結構 二 自定義迴圈佇列
佇列是乙個有序列表,可以用陣列或鍊錶實現,先進先出原則,即 先存入佇列的資料,要先取出。後存入的要後取出 迴圈佇列需要3個引數,head,tail,count 1.在佇列初始化的時候,head以及tail都為0 2.count用來記錄佇列中元素的個數 package com.zyd import s...