• 32. Longest Valid Parentheses


    https://leetcode.com/problems/longest-valid-parentheses/description/

    来回做了好几遍,虽然AC 了但是这个解发肯定不是最优的。思路是把问题分两步解决:1. 把字符串转换成一个匹配括号的id 序列,比如第0 个和第3 个匹配了,则把0,3都记录在一个数组里。2. 排序生成的这个数组,然后遍历一次找最长的连续串,比如1235 里面,123 就是最长的连续串。排序是必要的,考虑这个例子:()(()),生成的序列是012325, 排序以后则是12345,反应了匹配的括号是确实是连续的。

    class Solution {
    public:
        int longestValidParentheses(string s) {
            //transform the problem into 2 sub problems
            //1. convert string into match pairs
            //2. calculate connectivity from pairs
            
            if (s.length() < 2) {
                return 0;
            } 
            
            //converting matching pair
            vector<int> stack;
            vector<int> pairs;
            for (int i = 0; i < s.length(); i++) {
                if (s[i] == '(') {
                    stack.push_back(i);
                }
                else if (stack.size() > 0) {
                    auto top = *(stack.end()-1);
                    stack.pop_back();
                    pairs.push_back(top);
                    pairs.push_back(i);
                }
            }
            
            //check conseqtivity
            std::sort(pairs.begin(), pairs.end());
            if (pairs.size() == 0) {
                return 0;
            }
            int last = pairs[0];
            int cur;
            int acc = 0;
            int m = 0;
            for (int i = 1; i < pairs.size(); i++) {
                cur = pairs[i];
                if (cur - last == 1) {
                    acc++;
                } else {
                    m = std::max(acc+1, m);
                    acc = 0;
                }
                last = cur;
            }
            
            if (acc > 0) {
                m = std::max(acc+1, m);
            }
            
            return m;
        }
    };
  • 相关阅读:
    CDH中flume是已经启动着了…
    CDH中,执行HIVE脚本表联查权限问题。。
    linux screen 命令详解(未验证+研究)
    004ICMP-type对应表
    003iptables 命令介绍
    002利用zabbix监控某个目录大小
    Nginx图片剪裁模块探究 http_image_filter_module
    linux增加自定义path和manpath
    TortoiseSVN中图标的含义
    Linux SVN 搭建(YUM)安装
  • 原文地址:https://www.cnblogs.com/agentgamer/p/9778254.html
Copyright © 2020-2023  润新知