司马算法(2020.02.15)

题目

	/**
	 * 1、已知一个字符串都是由左括号(和右括号)组成,判断该字符串是否是有效的括号组合。
	 * 例子:
	 * 有效的括号组合:()(),(()),(()())
	 * 无效的括号组合:(,()),((),()(()
	 */

解题思路

引入status常量来对字符数组做监测在这里插入图片描述

Coding:

 public static boolean isValid(String str) {
     	//判断字符串是否为空
        if (str == null || str == "") {
            return false;
        }
        //字符串拆分为字符数组
        Char[] chars = str.toCharArray();
        //根据status的状态来判断
       int status = 0;
       for (int i = 0; i < chars.length; i++) {
      	    //判断数组是否只有() 若有其他字符 则为无效组合
            if (chars[i] != ')' || chars[i] != '(') {
       			return false;
       		}
        	//当数组遍历是值为)并且status-1后小于0的话则说明不满足在任一区间内')'<='('
            if (chars[i] == ')' && --status < 0) {
				return false;
			}
			 //如果是'(' status+1
            if (chars[i] == '(') {
            	status++;
            }
           return status == 0;

       } 
    }
发布了19 篇原创文章 · 获赞 6 · 访问量 1979

猜你喜欢

转载自blog.csdn.net/qq_42252844/article/details/104337295