当前位置: 首页 > wzjs >正文

企业网站模板科技感百度购物平台客服电话

企业网站模板科技感,百度购物平台客服电话,做网站有哪些类型,做网站用什么云服务器32. 最长有效括号 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二:栈 class Solution { public:int longestValid…

32. 最长有效括号

给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

https://leetcode.cn/problems/longest-valid-parentheses/

2.方法二:栈

在这里插入图片描述

class Solution {
public:int longestValidParentheses(string s) {int max_len = 0, cur_len = 0;stack<pair<char,int>> sub_s;sub_s.push({' ',-1 });for (int i = 0; i < s.size(); i++) {if (s[i] == '(') {sub_s.push({'(',i});}else {// 如果是)的话if (sub_s.top().first == -1) {// 不可能出现匹配了,记录失配点sub_s.push({ ')',i });}else {// 栈里有个(if (sub_s.top().first == '(') {sub_s.pop();cur_len = i - sub_s.top().second;if (max_len < cur_len) {max_len = cur_len;}}else {// 否则失配sub_s.push({ ')',i });}}}}return max_len;}
};

1.方法一:动态规划

在这里插入图片描述

在这里插入图片描述

class Solution {
public:int longestValidParentheses(string s) {if (s.size() <= 1) {return 0;}vector<int> dp(s.size());dp[0] = 0;int max_len = 0;for (int i = 1; i < s.size(); i++) {if (s[i] == ')' && s[i - 1] == '(') {// 是()()()这样连着的,就可以逐个累积if (i > 2) {dp[i] = 2 + dp[i - 2];} else {dp[i] = 2;}} else if (s[i] == ')' && s[i - 1] == ')') {// ……)) 这样的样子,可能是// 情况1:()) 不匹配// 情况2:(()) 匹配了并且前面没有可以匹配的了// 情况3:()()()(())匹配而且前面还有可以匹配的if (i - dp[i - 1] - 1 >= 0 && s[i - dp[i - 1] - 1] == '(') {if (i - dp[i - 1] - 2 >= 0) {dp[i] = dp[i - dp[i - 1] - 2] + 2 + dp[i - 1];} else {dp[i] = dp[i - 1] + 2;}} else {dp[i] = 0;}} else {dp[i] = 0;}if (max_len < dp[i]) {max_len = dp[i];}}return max_len;}
};

方法三:贪心算法

我觉得这个方法有点类似这个题的算法:

【算法day19】括号生成——数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合

也就是说,通过判断左右括号的数量来判断是否匹配
在这里插入图片描述

但是这个算法没有考虑()(((()的情况,这个显然左括号很多,但是右括号严重缺少。
所以我们从右往左再类似地看一次,这次判断 ,左括号数大于右括号数,就失配,令当前匹配数量为0.

在这里插入图片描述

class Solution {
public:int longestValidParentheses(string s) {int cur_len = 0, max_len = 0;int left_num = 0, right_num = 0;for (int i = 0; i < s.size(); i++) {if (s[i] == '(') {++left_num;} else if (s[i] == ')') {++right_num;}if (right_num > left_num) {right_num = 0;left_num = 0;} else if(right_num==left_num){cur_len = 2 * min(left_num, right_num);if (cur_len > max_len) {max_len = cur_len;}}}left_num = 0, right_num = 0;for (int i = s.size() - 1; i < s.size(); i--) {if (s[i] == '(') {++left_num;} else if (s[i] == ')') {++right_num;}if (right_num < left_num) {right_num = 0;left_num = 0;} else if (right_num == left_num) {cur_len = 2 * min(left_num, right_num);if (cur_len > max_len) {max_len = cur_len;}}}return max_len;}
};
http://www.dtcms.com/wzjs/129851.html

相关文章:

  • 网站建设吧如何免费制作自己的网站
  • 沧州做网站多少钱深圳全网信息流推广公司
  • web网站开发视频线上推广活动有哪些
  • wordpress取消邮件seo工程师是什么职业
  • 一份优秀的网络推广方案百度seo排名优
  • 网站空间后台怎么进入个人如何推广app
  • 顺德微网站建设整合营销传播的方法包括
  • 青岛市医疗保险网站免费的网页设计成品下载
  • 安徽平台网站建设制作互联网营销平台有哪些
  • 网站开发遇到的风险动态网站建设
  • 重庆网站关键词排名百度联系电话多少
  • 网站建设二级页面方案武汉百度快速排名提升
  • 用别人的电影网站做公众号百家号权重查询
  • 建设一个聊天类的网站成都网站制作
  • 制定企业网站营销推广战略球队排名榜实时排名
  • 网站建设案例欣赏郑州seo顾问阿亮
  • 苏州专业网站建设设计公司哪家好湖南seo优化
  • 网站是用什么技术做的开个网站平台要多少钱
  • 学做简单网站视频教程优搜云seo
  • 青岛建站价格可口可乐营销策划方案
  • 图书馆网站参考咨询建设网络营销软文范例500字
  • 猎头网站怎么做pc网站优化排名
  • 网站建设模板一次收费广告推广平台赚取佣金
  • 网页传奇装备上海搜索引擎优化公司
  • 杭州萧山做网站公司互联网营销的十五种方式
  • 怎样做建网站做淘客google google
  • 如何网站做镜像怎么宣传自己的产品
  • 网络教学平台昆明理工大学seo搜索排名优化
  • 网站模块分类青岛网站推广企业
  • 品牌建设网站爱站工具下载