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

企业网站模板科技感厉害的seo顾问

企业网站模板科技感,厉害的seo顾问,城市建设模拟游戏登陆网站,建站宝盒建网站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/475152.html

相关文章:

  • 做外贸如何选择网站专业做网站官网
  • 长沙网站外包公司新闻头条最新
  • 珠海建站论坛推广seo公司
  • 建设网站案例合肥优化排名推广
  • 天津河西做网站公司腾讯会议开始收费
  • 网站开发域名注册竞价托管的注意事项
  • 如何制作自己的网站在里面卖东西推广软文范例
  • 长沙优化科技有限公司地址网页优化最为重要的内容是
  • 网站优化工作室酒店营销推广方案
  • 阿里云做的网站如何发布年度关键词
  • asp做新闻网站网站关键词优化排名外包
  • 武汉市建设厅网站新东方线下培训机构官网
  • 个人可做网站需要什么材料seo诊断分析在线工具
  • 网站内容编辑怎么做seo北京网站推广
  • 北京疫情现在怎么样了网站seo排名优化
  • 网站建设公司怎么盈利抖音关键词排名优化
  • 提供做网站企业除了百度指数还有哪些指数
  • 做个营销型网站要多少钱360关键词排名推广
  • 纯英文网站建设如何让百度搜索到自己的网站
  • 网站百度多久做一次排名大型seo公司
  • 网络营销策划论文青岛网络优化费用
  • 网站开发要用到的工具盐城seo排名
  • 福田区住房和建设局网站收录网
  • vi毕业设计代做网站职业技能培训网站
  • 做网站技术员北海百度seo
  • 三河网站建设百度地图关键词优化
  • 网站开发公司怎么做账百度的搜索引擎优化
  • 廉洁 网站建设外贸网站推广seo
  • 网站建设服务费如何做会计分录产品推广文案怎么写
  • 做一个宣传网站的策划书搜索引擎整合营销