最长有效括号

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;

}

};

相关推荐
CoderYanger1 小时前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
猫头虎2 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作
长不胖的路人甲2 小时前
什么是赫夫曼树(哈夫曼树 / Huffman Tree)
python·算法·霍夫曼树
Warren2Lynch3 小时前
掌握 UML 构造型、标记定义与标记值:面向领域特定建模的 UML 扩展全面指南
大数据·算法·uml
157092511343 小时前
【无标题】
开发语言·python·算法
稚南城才子,乌衣巷风流3 小时前
换根法(Rerooting)算法详解
算法
晓子文集3 小时前
Tushare接口文档:期货交易日历(fut_trade_cal)
大数据·算法
^yi5 小时前
【Linux系统编程】进程状态的理解
算法·僵尸进程·孤儿进程·进程状态·挂起状态·阻塞状态
hhzz5 小时前
机器学习-算法模型系列文章:04-KNN 不做标准化就跑KNN?你的模型正在被一个特征“独裁“
人工智能·算法·机器学习