最长有效括号

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;

}

};

相关推荐
小雉系统7 小时前
BcoreOS安全通信架构:FsSession 抗算法后门安全设计
算法·安全·架构
唐墨12311 小时前
linux kernel 比较数据大小的宏定义
linux·算法
拂拉氏11 小时前
【知识讲解-题目讲解】 统计满足K约束的子字符串数量2 (滑动窗口+前缀和+二分查找+分析)
算法·前缀和·二分查找·滑动窗口
通信小呆呆16 小时前
电子战抗干扰技术:当“不被干扰”成为一种系统
算法·通信·mimo·isac
笑容掩饰我的失落16 小时前
区块链从小白到精通(八):从零实现一个标准 ERC-20 代币(完整可运行代码)
算法·区块链·php·智能合约·哈希算法
Severus_black17 小时前
【C++初阶】Stack、Queue算法题大练兵!
c语言·c++·算法·stl
2601_9679791219 小时前
机器学习必修课:经典算法与Python实战
python·算法·机器学习·实战·课程
程序猿打工仔19 小时前
计算机基础(C语言)考编、专技岗
c语言·开发语言·算法
通信小呆呆20 小时前
电子战干扰技术:从“蛮力压制”到“精准欺骗”,再到“认知博弈”
算法·通信·isac