其他分享
首页 > 其他分享> > Leetcode_678_有效的括号字符串_字符串

Leetcode_678_有效的括号字符串_字符串

作者:互联网

经典左右扫两遍匹配括号做法;
不难发现,只有

  1. 当从左往右遍历时,存在右括号大于左括号
  2. 当从右往左遍历时,存在左括号大于右括号
  3. 总的左括号和右括号数量不等

这三种情况,才会导致匹配失败。

这道题引入通配符,稍微加点处理逻辑就行了,本质没变

class Solution {
    public boolean checkValidString(String s) {
        int l = 0;
        int r = 0;
        int star = 0;
        int len = s.length();
        for (int i = 0; i < len; i++) {
            if (s.charAt(i) == '(') {
                l++;
            } else if (s.charAt(i) == ')') {
                r++;
                if (r > l + star) {
                    return false;
                }
            } else {
                star++;
            }
        }
        if (l > r + star && r < l + star && l != r) {
            return false;
        }
        l = r = star = 0;
        for (int i = len - 1; i >= 0; i--) {
            if (s.charAt(i) == '(') {
                l++;
                if (l > r + star) {
                    return false;
                }
            } else if (s.charAt(i) == ')') {
                r++;
            } else {
                star++;
            }
        }
        if (l > r + star && r < l + star && l != r) {
            return false;
        }
        return true;
    }
}

标签:star,++,return,括号,int,字符串,678,false,Leetcode
来源: https://blog.csdn.net/HDUCheater/article/details/120247556