题干
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a132feb5c89170d496ee211f8443d54c.png)
C++实现
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stack>
#include <string>
using namespace std;
int main() {
stack<char> myStack;
char strArr[10000] = { 0 };
scanf("%s", strArr);
for (int i = 0; strArr[i] != '\0'; i++)
{
if (strArr[i] == '<' || strArr[i] == '(' || strArr[i] == '[' || strArr[i] == '{') {
myStack.push(strArr[i]);
}
else if(strArr[i] == '>') {
if (myStack.empty() || myStack.top() != '<') {
printf("no\n");
return 0;
}
else {
myStack.pop();
}
}
else if (strArr[i] == ')') {
if (myStack.empty() || myStack.top() != '(') {
printf("no\n");
return 0;
}
else {
myStack.pop();
}
}
else if (strArr[i] == ']') {
if (myStack.empty() || myStack.top() != '[') {
printf("no\n");
return 0;
}
else {
myStack.pop();
}
}
else if (strArr[i] == '}') {
if (myStack.empty() || myStack.top() != '{') {
printf("no\n");
return 0;
}
else {
myStack.pop();
}
}
}
if (myStack.empty()) {
printf("yes\n");
}
else {
printf("no\n");
}
return 0;
}
更简洁的写法
class Solution {
public:
bool isValid(string s) {
if (s.size() % 2 != 0) return false;
stack<char> st;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '(') st.push(')');
else if (s[i] == '{') st.push('}');
else if (s[i] == '[') st.push(']');
else if (st.empty() || st.top() != s[i]) return false;
else st.pop();
}
return st.empty();
}
};