已解决
2609. 最长平衡子字符串 --力扣 --JAVA
来自网友在路上 197897提问 提问时间:2023-11-09 19:22:31阅读次数: 97
最佳答案 问答题库978位专家为你答疑解惑
题目
给你一个仅由 0 和 1 组成的二进制字符串 s 。
如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。
返回 s 中最长的平衡子字符串长度。
子字符串是字符串中的一个连续字符序列。
解题思路
- 创建变量记录0和1出现的次数;
- 分情况讨论
- 当前字符为0
- 前面是否出现过1;
- 出现过则重新记录;
- 未出现则累计记录;
- 当前字符为1:
- 前面是否存在0;
- 不存在则跳过;
- 存在则累加;
- 当前字符为0
代码展示
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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!