文章
35
粉丝
0
获赞
144
访问
7.3k
#include <bits/stdc++.h>
using namespace std;
// 大括号 > 中括号 > 小括号 > 尖括号
int priority(char c) {
if (c == '{' || c == '}') return 1;
if (c == '[' || c == ']') return 2;
if (c == '(' || c == ')') return 3;
if (c == '<' || c == '>') return 4;
return 0;
}
// 否合法
bool isValid(string expr) {
stack<char> s;
stack<int> p; // 存储当前括号的优先级
for (char c : expr) {
if (c == '{' || c == '[' || c == '(' || c == '<') {
s.push(c);
p.push(priority(c));
} else if (c == '}' || c == ']' || c == ')' || c == '>') {
if (s.empty()) return false; //
char top = s.top();
s.pop();
int topPriority = p.top();
p.pop();
if (!((c == '}' && top == '{') ||
(c == ']' && top == '[') ||
(c == ')' && top == '(') ||
(c == '>' ...
登录后发布评论
暂无评论,来抢沙发