设计一个算法,判断一个可能含有小括号
时间: 2023-04-21 08:03:02 浏览: 78
的字符串是否合法,即左右括号是否匹配。
算法思路:
1. 定义一个栈,用于存储左括号。
2. 遍历字符串中的每一个字符,如果是左括号,则将其入栈;如果是右括号,则判断栈顶元素是否为对应的左括号,如果是,则将栈顶元素出栈,继续遍历;如果不是,则说明括号不匹配,返回false。
3. 遍历完字符串后,如果栈为空,则说明所有括号都匹配,返回true;否则,说明还有左括号没有匹配,返回false。
代码实现:
bool isValid(string s) {
stack<char> st;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') {
st.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (st.empty()) {
return false;
}
char top = st.top();
st.pop();
if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {
return false;
}
}
}
return st.empty();
}