括號問題一

2021-09-25 18:41:00 字數 887 閱讀 9555

給定乙個字串,裡邊可能包含「()」、"{}"、「」三種括號,請編寫程式檢查該字串的括號是否成對出現。

輸出:true:代表括號成對出現並且巢狀正確,或字串無括號字元。

false:未正確使用括號字元。

使用棧的思想,對輸入從左到右依次判斷,若是左括號,則入棧;若是右括號,則檢測棧頂是否與當前右括號匹配,匹配成功則繼續匹配,否則,直接輸出錯誤。

此外,我個人認為存在幾個細節問題:

1,若棧為空時,先出現右括號,若強行進行匹配會報錯,可直接輸出錯誤;

2,匹配結束後,若棧不為空,則需要輸出錯誤,因為輸入字串中可能存在其他非法符號,因此不能直接通過判斷長度是否是偶數來決定輸出。

while true:

try:

inps=input().strip()

#解題思想是棧,用於儲存左括號

stacks=

lef=['(','[','']

for item in inps:

if item in lef:

elif item in rig:

indexs=rig.index(item)

#右括號需要與左括號進行匹配,匹配成功則出棧,否則不合法

if stacks and stacks[-1]==lef[indexs]:

stacks.pop()

else:

print(false)

break

else:

#匹配結束,需判斷棧是否為空,因可能存在非法符號,則不能直接根據輸入括號的長度進行判斷

if stacks:

print(false)

else:

print(true)

except:

break

括號配對問題(一)

description 現在有一種只包括左右小括號 和 和空格 的字串序列,請你判斷括號是否匹配,如果匹配就輸出yes,不匹配輸出no。input 輸入資料第一行輸入乙個t 0 t 100 表示測試資料的組數。接下來有t行測試資料,每行有乙個符合題意的字串,字串長度不超過500。sample inp...

括號配對問題

原文 1.括號匹配的四種可能性 左右括號配對次序不正確 右括號多於左括號 左括號多於右括號 左右括號匹配正確 2.演算法思想 1.順序掃瞄算數表示式 表現為乙個字串 當遇到三種型別的左括號時候讓該括號進棧 2.當掃瞄到某一種型別的右括號時,比較當前棧頂元素是否與之匹配,若匹配,退棧繼續判斷 3.若當...

括號配對問題

描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入 第一行輸入乙個數n 0 n 100 表示有n組測試資料。後面的n行輸入多組輸入資料,每組輸入資料都是乙個字串s s的長度小於10000,且s不是空串 測試資料組數少於5組。資料保證s中只含有 四種字元 輸出 每組輸入資料的輸出佔一行,如果該...