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

c web网站开发浏览器网页怎么做出来的

c web网站开发浏览器,网页怎么做出来的,网页搜索是什么意思,wordpress 严重 漏洞题目 给你一个只包含 ‘(’ 和 ‘)’ 的字符串 s s s,找出最长有效(格式正确且连续)括号子串的长度。 方法 动态规划 d p [ i ] dp[i] dp[i] 表示以 s [ i ] s[i] s[i] 结尾的最长有效括号的长度如果 s [ i ] s[i] s[i] 为左括号&#…

题目

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

方法

动态规划

  • d p [ i ] dp[i] dp[i] 表示以 s [ i ] s[i] s[i] 结尾的最长有效括号的长度
  • 如果 s [ i ] s[i] s[i] 为左括号,则 d p [ i ] = 0 dp[i] = 0 dp[i]=0
  • 如果 s [ i ] s[i] s[i] 为右括号,
    • s [ i − 1 ] s[i-1] s[i1] 为左括号, 则 d p [ i ] = d p [ i − 2 ] + 2 dp[i] = dp[i-2] + 2 dp[i]=dp[i2]+2
    • s [ i − 1 ] s[i-1] s[i1] 为右括号,
      • s [ i − 1 − d p [ i − 1 ] ] s[i-1-dp[i-1]] s[i1dp[i1]] 为左括号,则 d p [ i ] = d p [ i − 1 ] + d p [ i − 2 − d p [ i − 1 ] ] + 2 dp[i] = dp[i-1] + dp[i-2-dp[i-1]] + 2 dp[i]=dp[i1]+dp[i2dp[i1]]+2
      • s [ i − 1 − d p [ i − 1 ] ] s[i-1-dp[i-1]] s[i1dp[i1]] 为右括号,则 d p [ i ] = 0 dp[i] = 0 dp[i]=0

  • 始终保持栈底元素为最后一个没有被匹配的右括号的下标,这样的做法主要是考虑了边界条件的处理,栈里其他元素维护左括号的下标:

    • 对于遇到的每个‘(’ ,我们将它的下标放入栈中
    • 对于遇到的每个‘)’,我们先弹出栈顶元素表示匹配了当前右括号:
      • 如果栈为空,说明当前的右括号为没有被匹配的右括号,我们将其下标放入栈中来更新我们之前提到最后一个没有被匹配的右括号的下标
      • 如果栈不为空,当前右括号的下标减去栈顶元素即为以该右括号为结尾的最长有效括号的长度
        我们从前往后遍历字符串并更新答案即可。
  • 需要注意的是,如果一开始栈为空,第一个字符为左括号的时候我们会将其放入栈中,这样就不满足提及的最后一个没有被匹配的右括号的下标,为了保持统一,我们在一开始的时候往栈中放入一个值为 − 1 -1 1 的元素

两次遍历

  • 从左往右遍历字符串:
    • 当遇到左括号时, l e f t left left 加一;当遇到右括号时, r i g h t right right 加一;
    • l e f t = = r i g h t left == right left==right,更新一次最长有效括号的长度
    • l e f t < r i g h t left < right left<right,将两个变量清零;
  • 从右往左遍历字符串:
    • 当遇到左括号时, l e f t left left 加一;当遇到右括号时, r i g h t right right 加一;
    • l e f t = = r i g h t left == right left==right,更新一次最长有效括号的长度
    • l e f t > r i g h t left > right left>right,将两个变量清零;

代码

class Solution {
public:int longestValidParentheses(string s) {// int n = s.size();// stack<int> stk;// vector<vector<int>> ind_list;// stk.push(-1);// int ret = 0;// for(int i = 0; i < n; i++){//     if(s[i] == '('){//         stk.push(i);//     }//     else{//         if(stk.top() != -1){//             if(ind_list.size()>0 && stk.top()-ind_list[ind_list.size()-1][1] < 0){//                 ind_list[ind_list.size()-1][0] = stk.top();//                 ind_list[ind_list.size()-1][1] = i;//             }//             else//                 ind_list.push_back({stk.top(), i});//             if(ind_list.size()>=2){//                 int r1 = ind_list[ind_list.size()-2][1];//                 int l2 = ind_list[ind_list.size()-1][0];//                 int r2 = ind_list[ind_list.size()-1][1];//                 if(l2-r1 == 1){//                     ind_list[ind_list.size()-2][1] = r2;//                     ind_list.pop_back();//                 }//             }//             stk.pop();//         }//     }// }// for(int i = 0; i < ind_list.size(); i++){//     ret = max(ret, ind_list[i][1]-ind_list[i][0]+1);// }// return ret;// 1 dp// int n = s.size();// vector<int> dp(n, 0);// int ret = 0;// for(int i = 1; i < n; i++){//     if(s[i] == ')' && s[i-1] == '('){//         if(i >= 2)//             dp[i] = dp[i-2] + 2;//         else//             dp[i] = 2;//     }//     else if(s[i] == ')' && s[i-1] == ')'){//         if(i-1-dp[i-1] >= 0 && s[i-1-dp[i-1]] == '('){//             if(i-2-dp[i-1] >= 0)//                 dp[i] = dp[i-1] + 2 + dp[i-2-dp[i-1]];//             else    //                 dp[i] = dp[i-1] + 2;//         }//     }//     ret = max(ret, dp[i]);// }// return ret;// 2 stackint n = s.size();stack<int> stk;stk.push(-1);int ret = 0;for(int i = 0; i < n; i++){if(s[i] == '('){stk.push(i);}else{stk.pop();if(stk.empty()){stk.push(i);}else{ret = max(ret, i-stk.top());}}}return ret;// 3// int n = s.size();// int left = 0, right = 0;// int ret = 0;// for(int i = 0; i < n; i++){//     if(s[i] == '('){//         left++;//     }//     else{//         right++;//     }//     if(left == right){//         ret = max(ret, 2*left);//     }//     else if(right > left){//         right = 0;//         left = 0;//     }// }// left = 0; right = 0;// for(int i = n-1; i >= 0; i--){//     if(s[i] == '('){//         left++;//     }//     else{//         right++;//     }//     if(left == right){//         ret = max(ret, 2*left);//     }//     else if(right < left){//         right = 0;//         left = 0;//     }// }// return ret;}
};
http://www.fp688.cn/news/141976.html

相关文章:

  • 做网站的步骤的文本谷歌搜索排名
  • 图书馆网站建设情况总结官网整站优化
  • 电子商务网站开发项目百度信息流开户多少钱
  • 付费资料网站开发百度推广怎么做的
  • 服装电子商务网站设计百度网盘人工申诉电话
  • 找个专门做各种外卖的网站谷歌推广方案
  • 微商货源网什么什么网站建设发帖百度秒收录网站分享
  • 做presentation的网站qq推广平台
  • 网站中怎么做视频直播关键词优化排名用什么软件比较好
  • 群辉服务器建设的网站微信搜一搜怎么做推广
  • 南通做网站企业山东seo费用多少
  • 银川制作网站技能培训网站
  • wordpress 下载短代码长沙建站优化
  • 开发网站的流程步骤广州seo招聘网
  • 做公司+网站建设价格低搜索引擎优化方法有哪些
  • 当当网网站的建设过程社群营销的具体方法
  • php动态网站开发实训8聊城网站推广的公司
  • 建设通网站有法律网店运营具体做什么
  • 上海做网站好的公司有哪些一键免费建站
  • 国内推广网络优化软件
  • 太平洋汽车网址大全网站seo哪家好
  • 网站做3年google推广技巧
  • 珠海网站建设 骏域网站搜索引擎案例分析结论
  • 枣庄网站开发公司百度保障客服电话
  • 设计师联盟官网效果图百色seo外包
  • 网站后缀ga重庆seo代理计费
  • 写作网站的文风北京网站优化体验
  • 香港做电商网站seo资源咨询
  • 湛江免费网站建站模板网络营销方式与工具有哪些
  • 集团公司手机站网站漯河网站推广公司