系列文章目录
前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
描述
给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
bool isValid(string s) {
stack<char> stk;
for(int i=0;i<s.size();i++){
switch(s[i]){
case '(':
case '[':
case '{':
stk.push(s[i]); //当前字符为'(','{','['时,元素入栈
break;
case ')':
if(stk.empty() || stk.top() != '(') //栈空或者括号栈顶字符与当前字符不匹配,则序列为不合法序列
return false;
stk.pop(); //匹配的栈顶元素出栈
break;
case ']':
if(stk.empty() || stk.top() != '[')
return false;
stk.pop();
break;
case '}':
if(stk.empty() || stk.top() != '{')
return false;
stk.pop();
break;
}
}
return stk.empty()?true:false; //当括号以正确顺序关闭时则最后的栈为空
}