定个小目标之刷LeetCode热题(45)

32. 最长有效括号

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

子串的长度。

示例 1:

输入:s = "(()"
输出:2
解释:最长有效括号子串是 "()"

有事会暂停更新,总之慢慢积累,今天看一下这道题,有动态规划、栈等解法,本题采用计数器法,思路就是分别定义两个计数器left和rigth,首先从左向右遍历,当遇到左括号时left++,遇到右括号时right++,当left == right时记录此时有效子串的长度maxLength,当right > left时,重置left和right为0,遍历结束后不一定能得到最长有效括号的长度,因为如果输入的是“((((((()”时,此时如果从左向右遍历maxLength依旧为0,我们需要从右向左遍历,需要改变的条件是当left > right时,重置left和right为0,两次不同方向遍历结束后就可以得到maxLength了,时间复杂度为O(n),空间复杂度为O(1),代码如下

class Solution {
    public int longestValidParentheses(String s) {
        int left = 0, right = 0, maxLength = 0;
        // 从左向右遍历
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                left++;
            } else {
                right++;
            }
            if (left == right) {
                maxLength = Math.max(maxLength, right * 2);
            } else if (right > left) {
                left = right = 0;
            }
        }
        left = right = 0;
        // 从右向左遍历
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == ')') {
                right++;
            } else {
                left++;
            }
            if (left == right) {
                maxLength = Math.max(maxLength, left * 2);
            } else if (left > right) {
                left = right = 0;
            }
        }
        return maxLength;
    }
}

题目链接:题单 - 力扣(LeetCode)全球极客挚爱的技术成长平台

相关推荐

  1. 目标LeetCode45

    2024-07-20 13:12:03       26 阅读
  2. 目标LeetCode43

    2024-07-20 13:12:03       21 阅读
  3. 目标LeetCode41

    2024-07-20 13:12:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 13:12:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 13:12:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 13:12:03       82 阅读
  4. Python语言-面向对象

    2024-07-20 13:12:03       92 阅读

热门阅读

  1. 人工势场法路径规划算法

    2024-07-20 13:12:03       23 阅读
  2. Android笔试面试题AI答之Activity(2)

    2024-07-20 13:12:03       23 阅读
  3. HIVE:使用get_json_object解析json对象

    2024-07-20 13:12:03       28 阅读
  4. Elasticsearch索引管理和生命周期管理

    2024-07-20 13:12:03       27 阅读
  5. 现代生活背景下陶瓷艺术设计的延伸与发展

    2024-07-20 13:12:03       26 阅读
  6. LeetCode 2956.找到两个数组中的公共元素:哈希表

    2024-07-20 13:12:03       26 阅读
  7. 麦芒30全新绽放,中国电信勾勒出AI手机的新方向

    2024-07-20 13:12:03       26 阅读
  8. Prometheus 运维中实际的故障案例以及解决办法

    2024-07-20 13:12:03       23 阅读
  9. Gmsh应用程序编程接口

    2024-07-20 13:12:03       22 阅读
  10. 【Go系列】RPC和grpc

    2024-07-20 13:12:03       26 阅读
  11. Spark SQL----INSERT OVERWRITE DIRECTORY

    2024-07-20 13:12:03       26 阅读