zoukankan      html  css  js  c++  java
  • leetcode栈--3、longest-valid-parentheses(最长有效匹配括号长度)

    题目描述
     
    Given a string containing just the characters'('and')', find the length of the longest valid (well-formed) parentheses substring.
    For"(()", the longest valid parentheses substring is"()", which has length = 2.
    Another example is")()())", where the longest valid parentheses substring is"()()", which has length = 4.
     
    解题思路:这里我们还是借助栈来求解,需要定义个start变量来记录合法括号串的起始位置,我们遍历字符串,如果遇到左括号,则将当前下标压入栈,如果遇到右括号,如果当前栈为空,则将下一个坐标位置记录到start,如果栈不为空,则将栈顶元素取出,此时若栈为空,则更新最长长度,为之前的len和i - start + 1中的较大值,否则更新长度为len和i - 栈顶元素中的较大值
     1 class Solution {
     2 public:
     3     int longestValidParentheses(string s) {
     4         int len = 0;
     5         int start = 0;
     6         int n = s.size();
     7         stack<int> ss;
     8         for(int i=0;i<n;i++)
     9         {
    10             if(s[i]=='(')
    11             {
    12                 ss.push(i);
    13             }
    14             else
    15             {
    16                 if(!ss.empty())
    17                 {
    18                     ss.pop();
    19                     len = ss.empty() ? max(len, i - start + 1) : max(len, i - ss.top());;
    20                 }
    21                 else
    22                 {
    23                     start = i+1;
    24                 }
    25             }
    26         }
    27         return len;
    28     }
    29 };
  • 相关阅读:
    python+selenium之页面元素截图
    selenium八大定位
    http概述之URL与资源
    数组中只出现一次的数字
    数字在排序数组中出现的次数
    把数组排成最小的数
    数组中出现次数超过一半的数字
    调整数组顺序使得奇数位于偶数的前面
    旋转数组的最小值
    二维数组的查找
  • 原文地址:https://www.cnblogs.com/qqky/p/6943783.html
Copyright © 2011-2022 走看看