每日一题 2609. 最长平衡子字符串(简单)

编程入门 行业动态 更新时间:2024-10-19 00:28:03

每日一题 2609. 最长平衡子<a href=https://www.elefans.com/category/jswz/34/1771434.html style=字符串(简单)"/>

每日一题 2609. 最长平衡子字符串(简单)


乍一看,简单题,思路也很简单,但代码有点不好写

  1. 思路无非就是从找到的第一个 ‘0’ 开始,一直找 ‘0’ 知道遇到一个 ‘1’,此时变换策略,一直找 ‘1’,知道遇到一个 ‘0’,就这样一直找
  2. 代码不好写,情况挺多
  3. 首先 0 比 1 少,如字符串 ”00011111“,那么在遇到下一个 ‘0’ 之前,我们就要记下这个平衡子串了,平衡子串的长度是 2 序列的两倍
  4. 0 必 1 多,如字符串 ”00000111“,那么平衡子串的长度是 1 序列的两倍
  5. 在这里我用 cnt 计数,遇到 0 就 +1,遇到 1 就 -1,那么就需要另一个参数来记录转折时的 cnt 值,不然无法计算平衡子串长度
class Solution:def findTheLongestBalancedSubstring(self, s: str) -> int:ans = 0cnt = 0k = 0t = '0'for i in s:if i == '0':if t == '0':cnt += 1else:ans = max(ans, (k-cnt)*2)cnt = 1t = '0'else:if t == '0':k = cntt = '1'cnt -= 1if cnt < 0:cnt = 0if cnt == 0:ans = max(ans, k*2)if t == '1':ans = max(ans, (k-cnt)*2)return ans

更多推荐

每日一题 2609. 最长平衡子字符串(简单)

本文发布于:2023-11-15 23:49:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1609985.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   最长   简单

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!