代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

@param s string字符串

@return bool布尔型

这是根据其中一个C的改写的代码

即:从左往右遍历,把星号视为左括号,在遍历的过程中如果出现左括号数量比右括号少,表示该字符串不合法,返回false;

从右往左遍历,把星号视为右括号,在遍历的过程中如果出现右括号数量比左括号少,表示该字符串不合法,返回false。

两次遍历均通过,说明该字符串合法,返回true。

class Solution:

def isValidString(self , s: str) -> bool:
    # write code here
    n = len(s)
    flag = 0
    for i in range(n):
        if s[i] == ')':
            flag -= 1
            if flag < 0:
                return False
        else:
            flag += 1
    flag = 0
    for i in range(n-1,-1,-1):
        if s[i] == '(':
            flag -= 1
            if flag < 0:
                return False
        else:
            flag += 1
    return True