当前位置:首页 > 编程笔记 > 正文
已解决

2609. 最长平衡子字符串 --力扣 --JAVA

来自网友在路上 197897提问 提问时间:2023-11-09 19:22:31阅读次数: 97

最佳答案 问答题库978位专家为你答疑解惑

题目

给你一个仅由 0 和 1 组成的二进制字符串 s 。  

如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。 

返回  s 中最长的平衡子字符串长度。

子字符串是字符串中的一个连续字符序列。

解题思路

  1. 创建变量记录0和1出现的次数;
  2. 分情况讨论
    1. 当前字符为0
      1. 前面是否出现过1;
      2. 出现过则重新记录;
      3. 未出现则累计记录;
    2. 当前字符为1:
      1. 前面是否存在0;
      2. 不存在则跳过;
      3. 存在则累加;

代码展示

class Solution {public int findTheLongestBalancedSubstring(String s) {int ans = 0;int zero = 0;int one = 0;for (int i = 0; i < s.length(); i++){if(s.charAt(i) == '0'){if(one != 0){ans = Math.max(ans, Math.min(zero, one) * 2);zero = 1;one = 0;} else {zero++;}} else {if(zero == 0){continue;}one++;}}return Math.max(ans, Math.min(zero, one) * 2);}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"2609. 最长平衡子字符串 --力扣 --JAVA":http://eshow365.cn/6-36457-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!