ARTS-006

Algorithm


32. Longest Valid Parentheses

my answer --wrong answer

class Solution {
    public int longestValidParentheses(String s) {
        int leftnum = 0;
        int now = 0;
        int max = 0, temp = 0;
        
        while(now < s.length()) {
            if ("(".equals(s.substring(now, now+1))) {
                ++leftnum;
            } else {
                if (leftnum == 0) {
                    temp = 0;
                } else {
                    --leftnum;
                    temp += 2;
                }
                max = max > temp ? max : temp;
            }
            ++now;
        }
        return max;     
    }
}

问题原因:没有考虑左括号分隔了两个valid parentheses的情况。如"()(()"
利用位置下标来计算长度

class Solution {
    public int longestValidParentheses(String s) {
        //记录待匹配括号的位置
        Stack needMatchIndex = new Stack<>();
        int now = 0;
        int max = 0;
        
        while(now < s.length()) {
            //如果匹配上
            if (needMatchIndex.isEmpty()== false && ')' == s.charAt(now) && '(' == s.charAt(needMatchIndex.peek())) {
                int index = needMatchIndex.pop();
                //从头到目前的内容都匹配上了
                if (needMatchIndex.isEmpty()) {
                    max = max > (now +1) ? max : (now +1);
                } else {//需要减掉不连续的部分
                    max = max > (now - needMatchIndex.peek()) ? max : (now - needMatchIndex.peek());
                }
            } else {
                needMatchIndex.push(now);
            }
            ++now;
        }
        return max;     
    }
}

Tip


mysql 安装好之后可以在“系统偏好设置”中看到mysql的图标,点击进去后可以进行相关配置,也可查看安装位置。如果安装mysql后mysql命令仍然无法使用,说明是没有在PATH里面加上其路径。用户可以在上述所说的位置找到路径,加入PATH中hMySQL for Mac 安装教程

增加mysql路径

Share


不要为了“分库分表”而“分库分表”

你可能感兴趣的:(ARTS-006)