栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021.12.28

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021.12.28

package com.nuo.Y_21M_12;



public class day10 {
    public static void main(String[] args) {
        System.out.println(Solution10.checkValidString("(*))"));
    }
}

class Solution10 {
    public static boolean checkValidString(String s) {
        int left = 0;
        int right = 0;
        char[] c = s.toCharArray();
        for (int i = 0; i < c.length; i++) {
            left = c[i] == ')'? left - 1 : left + 1;
            right = c[c.length - i - 1] == '(' ? right - 1 : right + 1;
            if (left < 0|| right < 0){
                return false;
            }
        }
        return true;
    }
}


有去参考别人的题解 ,利用了贪心算法,大致思路是从左往右和从右往左分别进行判断,从左往右时,因为 '*'可以充当 '(' & ')' ,为了确保'('数量足够 ,把'*'视为'(',每进行一次for循环,判断')'是否有足够的'('去匹配,若没有,则返回 false,否则循环继续,从右往左同理。从左往右和从右往左分别进行判断去确保'(' 和 ')'可以完全配对
PS :该好好去学下贪心算法了......

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号