一,題目描述
對於一個字符串,請設計一個算法,判斷其是否爲一個合法的括號串。
給定一個字符串A和它的長度n,請返回一個bool值代表它是否爲一個合法的括號串。
測試樣例:
"(()())",6
返回:true
測試樣例:
"()a()()",7
返回:false
測試樣例:
"()(()()",7
返回:false
二,程序分析
1.首先看到這個題目,能想到的就是括號匹配的問題,那麼,我們想怎麼能夠實現這樣呢,所以我們可以使用棧的方法,來進行。
2.我們可以讓括號的一遍,進行入棧,然後,繼續入棧,如果碰到另外一邊,那麼出棧,直到棧裏面的字符都能完成。
3.如果全部出棧,那麼返回true,否則,返回false。
三,程序代碼
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
stack<char> s;
for(auto& e : A)
{
switch(e)
{
case '(':
//入棧
s.push(e);
break;
case ')':
{
//如果,不匹配,則出棧
if(s.empty() || s.top() != '(')
return false;
else
//匹配,出棧
s.pop();
}
break;
default:
return false;
}
}
//全部返回輸出true;
return true;
}
};
四,程序運行結果
如果感覺不錯的話,加一個關注再走吖!!!