zoukankan      html  css  js  c++  java
  • 032 Longest Valid Parentheses 最长有效括号

    给一个只包含 '(' 和 ')' 的字符串,找出最长的有效(正确关闭)括号子串的长度。
    对于 "(()",最长有效括号子串为 "()" ,它的长度是 2。
    另一个例子 ")()())",最长有效括号子串为 "()()",它的长度是 4。
    详见:https://leetcode.com/problems/longest-valid-parentheses/description/

    Java实现:

    start变量来记录合法括号串的起始位置,遍历字符串,如果遇到左括号,则将当前下标压入栈,如果遇到右括号,如果当前栈为空,则将下一个坐标位置记录到start,如果栈不为空,则将栈顶元素取出,此时若栈为空,则更新结果和i - start + 1中的较大值,否则更新结果和i - 栈顶元素中的较大值.

    class Solution {
        public int longestValidParentheses(String s) {
            if(s==null || s.length()==0){
                return 0;
            }
            Stack<Integer> stack = new Stack<Integer>();
            int start = 0;
            int res = 0;
            for(int i=0;i<s.length();i++){
                if(s.charAt(i)=='('){
                    stack.push(i);
                }else{
                    if(stack.isEmpty()){
                        start = i+1;
                    }else{
                        stack.pop();
                        res = stack.isEmpty()?Math.max(res,i-start+1):Math.max(res,i-stack.peek());
                    }
                }
            }
            return res;
        }
    }
    

    参考:https://www.cnblogs.com/grandyang/p/4424731.html

  • 相关阅读:
    Android 屏幕适配比例
    不错的网站
    Android十大常用技术揭秘-挑战
    Linux 自己的常用命令
    Android 常用配置
    Android 边框 给控件添加边框
    Linux 常用命令大全
    TCP/IP、Http、Socket的区别
    Android 之基于 HTTP 协议的通信详解
    JavaScript基础:(加号,数值转换,布尔转换)
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8687829.html
Copyright © 2011-2022 走看看