给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。
例如,s = "110100010" 中,由 1 组成的最长连续子字符串的长度是 2 ,由 0 组成的最长连续子字符串的长度是 3 。
注意,如果字符串中不存在 0 ,此时认为由 0 组成的最长连续子字符串的长度是 0 。字符串中不存在 1 的情况也适用此规则。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longer-contiguous-segments-of-ones-than-zeros
解法:
import java.net.StandardSocketOptions;
public class Solution1 {
public static boolean checkZeroOnes(String s) {
int max1=0;//表示1的最长字串
int max0=0;//表示0的最长字串
int len1=0;//统计1的子串长度
int len0=0;//统计0的子串长度
//遍历整个字符串s的每个字符
for(int i=0; i < s.length(); i ++){
//若当前字符为1
if(s.charAt(i)=='1'){
len1++;//统计1的子串长度加1
len0 = 0;//并且清空统计0的子串记录(因为每次遇到不同就要重新数)
if (len1 > max1){//如果统计1的子串长度大于记录的最大子串1
max1 = len1;//保存这个记录
}
}else{
len0++;//统计0的子串长度加1
len1=0;//并且清空统计1的子串记录
if(len0 > max0){//如果统计0的子串长度大于记录的最大子串0
max0 =len0;//保存这个记录
}
}
}
//1最大字串是否大于0最大字串、是则返回true、否则返回false
return max1 > max0 ;
}
//测试
public static void main(String[] args) {
boolean test = checkZeroOnes("11010011100");
System.out.print(test);
}
}