對於乙個字串,請設計乙個演算法,判斷其是否為乙個合法的括號串。
給定乙個字串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 ...