题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 1.左括号必须用相同类型的右括号闭合。 2.左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true C++编写
时间: 2024-01-05 12:04:14 浏览: 197
判断某字符串是否存在
你可以使用栈来解决这个问题。遍历字符串,如果遇到左括号就将其入栈,如果遇到右括号就判断栈顶元素是否与其匹配,若匹配则出栈,否则返回false。最后如果栈为空,则说明字符串是有效的,返回true,否则返回false。
以下是C++的实现代码:
```cpp
#include <stack>
#include <string>
bool isValid(string s) {
stack<char> st;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') {
st.push(c);
} else {
if (st.empty()) {
return false;
}
if ((c == ')' && st.top() == '(') ||
(c == ']' && st.top() == '[') ||
(c == '}' && st.top() == '{')) {
st.pop();
} else {
return false;
}
}
}
return st.empty();
}
```
你可以调用该函数来判断字符串是否有效。例如,`isValid("()")` 的返回值为true。
阅读全文