​LeetCode解法汇总2609. 最长平衡子字符串

news/2024/7/5 7:52:33

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

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

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

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

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

示例 1:

输入:s = "01000111"
输出:6
解释:最长的平衡子字符串是 "000111" ,长度为 6 。

示例 2:

输入:s = "00111"
输出:4
解释:最长的平衡子字符串是 "0011" ,长度为  4 。

示例 3:

输入:s = "111"
输出:0
解释:除了空子字符串之外不存在其他平衡子字符串,所以答案为 0 。

提示:

  • 1 <= s.length <= 50
  • '0' <= s[i] <= '1'

解题思路:

使用num0记录0出现的次数,num1记录1出现的次数。
遍历字符串,组合一下一共分为四种情况:
1.当前的字符为'0',并且num1>0,则说明进入新一个平衡字符串的遍历,则把num0和num1置空。num0记录当次则为1;
2.当前的字符为'0',并且num1=0,则说明在新一个平衡字符串的遍历中记录0出现的次数,则num0+1即可;
3.当前的字符为'1',并且num0>0,则说明在平衡字符串的遍历中,进入到1的部分,取0和1的较小值和maxNum比较;
4.当前的字符为'1',并且num0=0,则无需处理。

代码:

class Solution2609
{
public:
    int findTheLongestBalancedSubstring(string s)
    {
        int maxNum = 0;
        int num0 = 0;
        int num1 = 0;
        const char *c = s.c_str();
        for (int i = 0; i < s.length(); i++)
        {
            if (c[i] == '0')
            {
                if (num1 > 0)
                {
                    num0 = 0;
                    num1 = 0;
                }
                num0++;
                continue;
            }
            if (num0 > 0)
            {
                num1++;
                maxNum = max(maxNum, min(num0, num1));
            }
        }
        return maxNum * 2;
    }
};


http://lihuaxi.xjx100.cn/news/1764832.html

相关文章

C# Winform自定义Switch控件

1、创建Switch控件 在控件库中添加用户控件&#xff08;Window窗体&#xff09;&#xff0c;控件名UcSwitch&#xff1b; 在属性/布局栏中的Size设置为70,30。 2、修改UcSwitch.cs using System; using System.Collections.Generic; using System.ComponentModel; using Syste…

Xilinx microblaze axi can 使用说明

本次主要描述在SDK上如何配置波特率和采样率这两个关键的信息。 XILINX官方提供的驱动包括循环方式和中断方式。配置波特率和采样率主要依靠XCan_SetBaudRatePrescaler和XCan_SetBitTiming这两个函数。主要参数&#xff1a; #define TEST_BRPR_BAUD_PRESCALAR //分频系…

如何使用Node编写开发小工具

在做有些项目的时候有时候会遇到要重复创建内容大概相同的文件&#xff0c;但是命名和文件夹存放不一样的业务。比如说组件参考文档框架的Storybook的编写&#xff0c;就是需要大量的拷贝相同的文件代码&#xff0c;其目录大概如下 |--| | src | |--Buttom | | |--Button…

聊聊芯片制造中的金属杂质

在半导体制造过程中&#xff0c;杂质控制至关重要。杂质可以影响半导体的电导率&#xff0c;导致性能降低或者失效。在这些杂质中&#xff0c;金属杂质是最主要的来源之一&#xff0c;这些金属杂质可以通过扩散或者电迁移的方式在芯片中迅速扩散&#xff0c;因此控制金属杂质的…

lightdb 普通用户拥有XMLTYPE类型的访问权限

文章目录 概述示例总结 概述 在信创移植的SQL语句中&#xff0c;有来源于Oracle数据库的SQL语句。 在Oracle中存在getClobVal函数&#xff0c;这个函数是Oracle中sys.XMLType的成员方法。 因此在LightDB23.3版本中实现了TYPE支持定义成员方法并且在新定义的XMLType类型中实现…

易点易动设备管理系统:提升设备巡检和维修效率,延长设备使用寿命的利器

在现代企业中&#xff0c;设备管理是一个至关重要的环节。然而&#xff0c;许多企业在设备巡检和维修方面面临挑战&#xff0c;如效率低下、信息不透明等问题。为了帮助企业提升设备巡检和维修效率&#xff0c;并延长设备的使用寿命&#xff0c;易点易动设备管理系统应运而生。…

Python+Selenium+Unittest 之selenium12--WebDriver操作方法2-鼠标操作1(ActionChains类简介)

在我们平时的使用过程中&#xff0c;会使用鼠标去进行很多操作&#xff0c;比如鼠标左键点击、双击、鼠标右键点击&#xff0c;鼠标指针悬浮、拖拽等操作。在selenium中&#xff0c;我们也可以去实现常用的这些鼠标操作&#xff0c;这时候就需要用到selenium中的ActionChains类…

windows cmake x86 x64 下载与安装

cmake 下载路径&#xff1a;cmake 下载选择&#xff1a; 界面下拉选取适合自己的版本 这里是windows x86 x64 &#xff08;x86是32位系统&#xff1b;x64是64位系统&#xff09; 安装&#xff1a; 点击安装。 此处选择添加环境变量 命令提示符 验证查看 cmake 桌面可以…