Leetcode 之Longest Valid Parentheses(39)

有一定的难度。用堆栈记录下所有左符的位置,用变量记录下孤立右符的位置。

int longestValidParentheses(const string& s)
      {
          stack<int>lefts;//将左符对应的位置保留
          int last;//记录孤立的右符位置
          int max_len = 0;//记录当前最长的有效长度
          for (int i = 0; i < s.size(); i++)
          {
              if (s[i] == '(')
                  lefts.push(i);
              else
              {
                  if (lefts.empty())
                  {
                      last = i;
                  }
                  else
                  {
                      lefts.pop();
                      if (lefts.empty())
                          max_len = max(max_len, i - last);
                      else
                          max_len = max(max_len, i - lefts.top());
                  }
              }
          }

          return max_len;
      }
View Code

 

posted @ 2016-05-26 16:08  牧马人夏峥  阅读(171)  评论(0编辑  收藏  举报