給定乙個字串,裡邊可能包含「()」、"{}"、「」三種括號,請編寫程式檢查該字串的括號是否成對出現。
輸出: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中只含有 四種字元 輸出 每組輸入資料的輸出佔一行,如果該...