最长有效括号

dp:

class Solution {

public:

int longestValidParentheses(string s) {

int n = s.size();

vector<int> dp(n + 1, 0);

int maxcnt = 0;

for (int i = 1; i < n; ++i) {

if (si == ')') {

if (si-1 == '(')

dpi = (i >= 2 ? dpi - 2 : 0)+2;

else {

int pos = i - dpi - 1 - 1; //'('

if (pos >= 0 && spos == '(') {

dpi = dpi - 1 + 2 + (pos >= 1 ? dppos - 1 : 0);//加上前面的

}

}

}

maxcnt = max(maxcnt, dpi);

}

return maxcnt;

}

};

lr:

class Solution {

public:

int longestValidParentheses(string s) {

int l = 0, r = 0, n = s.size();

int maxcnt = 0;

for (int i = 0; i < n; ++i) {

if (si == '(')

++l;

else

++r;

if (l == r)

maxcnt = max(maxcnt, l + r);

else if (r > l)

l = 0, r = 0;

}

l = 0, r = 0;

for (int i = n - 1; i > 0; --i) {

if (si == ')')

++l;

else

++r;

if (l == r)

maxcnt = max(maxcnt, l + r);

else if (r > l)

l = 0, r = 0;

}

return maxcnt;

}

};

双指针:

class Solution {

public:

int longestValidParentheses(string s) {

stack<int> st;

int n = s.size();

int maxcnt = 0;

st.push(-1);

for (int i = 0; i < n; ++i) {

if (si == '(') {

st.push(i);

} else {

st.pop();

if (st.empty())

st.push(i);

else

maxcnt = max(maxcnt, i - st.top());

}

}

return maxcnt;

}

};

相关推荐
Dola_Zou7 小时前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
啦啦啦啦啦zzzz8 小时前
Logger的组装(c++20)
c++·算法·c++20
尾善爱看海9 小时前
前端算法与手写题集
前端·算法
程序员阿鹏10 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
AI 思录10 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽10 小时前
跨范式映射的稳定接口设计
人工智能·python·算法
2601_9657422211 小时前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体
wordbaby12 小时前
混合检索:两全其美的艺术
人工智能·算法
彧azz13 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
热心网友俣先生13 小时前
A题-药材的烘干问题-题意逐句翻译
算法·数学建模