每日一题 为了工作 2020 0428 第五十七题

时间:2020-04-28
本文章向大家介绍每日一题 为了工作 2020 0428 第五十七题,主要包括每日一题 为了工作 2020 0428 第五十七题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/**
 * 【问题】
 *        括号字符串的有效性
 *        给定一个字符串str, 判断是不是整体有效的括号字符串。
 * 【举例】
 *        str="()", 返回true;
 *        str="(()())", 返回true;
 *        st1="(())", 返回true。
 *        str="())",返回false;
 *        str="()(", 返回false;
 *        str="()a()"' 返回false。
 * 【解答】
 * l. 从左到右遍历字符串str, 判断每一个字符是不是"("或")",如果不是,就直接返回false。
 * 2. 遍历到每一个字符时,都检查到目前为止"("和")"的数量, 如果")"更多,则直接返回false。
 * 3. 遍历后检查"("和")"的数量, 如果一样多, 则返回true, 否则返回false。
 *
 * @author 雪瞳
 * @Slogan 时钟尚且前行,人怎能再此止步!
 * @Function
 *
 */

  

public class IsValid {
    public static boolean isValid(String string){
        if ("".equals(string)||string == null){
            return false;
        }
        char[] words = string.toCharArray();
        int left = 0;
        int right = 0;
        for (int i = 0; i!=string.length();i++){
            if (!"(".equals(words[i]) || !")".equals(words[i])){
                return false;
            }
            if ("(".equals(words[i])){
                left++;
            }
            if (")".equals(words[i])){
                right++;
            }
            if (left<right){
                return false;
            }
        }
        if (left == right){
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        String string = "(()a())";
        String string2  = "))((";
        boolean valid = isValid(string2);
        if (valid){
            System.out.println("yes");
        }else {
            System.err.println("no");
        }
    }
}

  

原文地址:https://www.cnblogs.com/walxt/p/12793251.html