zoukankan      html  css  js  c++  java
  • 678. 有效的括号字符串 字符串

    给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:

    任何左括号 ( 必须有相应的右括号 )。
    任何右括号 ) 必须有相应的左括号 ( 。
    左括号 ( 必须在对应的右括号之前 )。
    * 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。
    一个空字符串也被视为有效字符串。
    示例 1:

    输入: "()"
    输出: True
    示例 2:

    输入: "(*)"
    输出: True
    示例 3:

    输入: "(*))"
    输出: True

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/valid-parenthesis-string
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution {
    public:
        bool checkValidString(string s) {
            //左括号的匹配情况的取值范围
            int high = 0, low = 0;
    
            for (char ch : s) {
                if (ch == '(') {
                    high++;
                    low++;
                }
                if (ch == '*') {
                    high++;
                    //下限最小为0,说明左括号“能够”被匹配完。指 ( <= ) + * -> ( 可以等于 )
                    low = max(0, low - 1);
                }
                if (ch == ')') {
                    high--;
                    low = max(0, low - 1);
                     //说明 ( + * < ) -> ( < ),不能被匹配
                    if (high < 0) {
                        return false;
                    }
                }
            }
            //若 low > 0 说明 * +) < (,不能匹配 
            return low == 0;
        }
    };
    
  • 相关阅读:
    既然选择了远方,就只顾风雨兼程!
    slots
    面向对象
    模块和作用域
    偏函数
    python中decorator
    返回函数
    filter, sort
    map/reduce
    开发步骤
  • 原文地址:https://www.cnblogs.com/xgbt/p/15260950.html
Copyright © 2011-2022 走看看