Leetcode——678. Valid Parenthesis String(匹配括号)

题目原址

https://leetcode.com/problems/valid-parenthesis-string/description/

题目描述

给定一个字符串,字符串中可以有(、)、*左括号,有括号和星号,星号可以表示左括号或右括号或空字符。返回该字符串是否可以左右括号完全匹配。

AC代码

示例一: 递归

class Solution {
    public boolean checkValidString(String s) {
        if(s == null) return true;
        return isValid(s, 0, 0);
    }

    private boolean isValid(String s, int index, int count) {
        if(count < 0)
            return false;
        for(int i = index; i < s.length(); i++) {
            if(s.charAt(i) == '(')
                count ++;
            else if(s.charAt(i) == ')')
                if(count <= 0) return false;
                else count--;
            else if(s.charAt(i) == '*') 
                return isValid(s, i + 1, count + 1) || isValid(s, i + 1, count) || isValid(s, i + 1, count -1);
        }
        return count == 0;        
    }
}

示例二:这个方法真的太神奇了

class Solution {        
    public boolean checkValidString(String s) {         
        int l = 0;      
        int r = 0;
        for(char c: s.toCharArray()) {
            l = c == '(' ? 1: -1;
            r = c == ')' ? -1 : 1;
            if(r < 0) return false;
            l = Math.max(l, 0);
        }
        return lo == 0;
    }
}
    原文作者:括号匹配问题
    原文地址: https://blog.csdn.net/xiaojie_570/article/details/80521461
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞