合法括號序列判斷

2021-10-03 05:43:43 字數 1053 閱讀 6521

對於乙個字串,請設計乙個演算法,判斷其是否為乙個合法的括號串。

給定乙個字串a和它的長度n,請返回乙個bool值代表它是否為乙個合法的括號串。

測試樣例:

「(()())」,6

返回:true

測試樣例:

「()a()()」,7

返回:false

測試樣例:

「()(()()」,7

返回:false

思路:我這裡利用了棧這種先進後出的資料結構,遇到『(』就入棧, 遇到『)』就判斷棧中是否有元素,有就代表有『(』與其匹配,這對括號合法可出棧頂元素。迴圈上述步驟,直到棧為空,或序列已經遍歷完成。完成後,最後判斷棧是否為空,為空則證明序列合法,具體如下**注釋

class

parenthesis

//首元素為『)』,則證明不合法,返回falseif(

')'==a[0]

)//入棧首元素

stack<

char

> s;

s.push

(a[0])

;int i=0;

//此迴圈用來判斷,序列是否含括號之外的元素,若含其他元素,

//則非法,返回false

while

(ii=1;

while(0

==s.

empty()

&&i//遇到右括號,棧不為空,出棧頂元素

while

(i')'==a[i]

&&s.

empty()

==0)//若棧為空,且a【i】為右括號,則證明其前面所有括號都已得到匹配

//該右括號無元素與其匹配,非法返回false

if(s.

empty()

==1&&i==')')}

//棧為空,證明所有括號都得到匹配,返回true,否則返回falseif(

1==s.

empty()

)return

true

;return

false;}

};

合法括號序列判斷

對於乙個字串,請設計乙個演算法,判斷其是否為乙個合法的括號串。給定乙個字串a和它的長度n,請返回乙個bool值代表它是否為乙個合法的括號串。測試樣例 6 返回 true 測試樣例 a 7 返回 false 思路 建立乙個int型別變數num,用來計算左括號 和右括號 的個數是否相等。如下 publi...

合法括號序列判斷

題目描述 對於乙個字串,請設計乙個演算法,判斷其是否為乙個合法的括號串。給定乙個字串a和它的長度n,請返回乙個bool值代表它是否為乙個合法的括號串。測試樣例 6 返回 true 測試樣例 a 7 返回 false 測試樣例 7 返回 false 思路 1 我們可以使用棧,就壓棧,如果棧內又 就出棧...

nowcoder 合法括號序列判斷

對於乙個字串,請設計乙個演算法,判斷其是否為乙個合法的括號串。給定乙個字串a和它的長度n,請返回乙個bool值代表它是否為乙個合法的括號串。測試樣例 6 返回 true 測試樣例 a 7 返回 false 測試樣例 7 返回 false 用乙個數字co unt 儲存左括號個數,當遇到右括號時,co ...