题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
#include <cstring>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> st;
for(int i=0;i<s.length();i++){
if(s[i]=='('){
st.push(')');
}
else if(s[i]=='{'){
st.push('}');
}
else if(s[i]=='['){
st.push(']');
}
else if(st.size()==0||st.top()!=s[i]){
return false;
}
else{
st.pop();
}
}
if(st.size()==0){
return true;
}
else{
return false;
}
}
};
括号类型不匹配的类型有3种:
1.字符串没遍历完但是栈空了
2.当前括号类型和栈顶元素不相同直接可判断字符串不匹配
前两种都是在字符扫描过程中直接可判断字符串不匹配的情况
3.字符串遍历结束后栈不为空
想了一下,其实只按照第三种来判断也是可以的。
入栈的情况,扫描到左括号类型(,{,【都给他入栈对应的右括号类型。
出栈的情况,当前字符类型等于栈顶元素
查看2道真题和解析