首页 > 其他分享 >2609. 最长平衡子字符串

2609. 最长平衡子字符串

时间:2023-11-08 10:57:05浏览次数:37  
标签:right int 2609 ans 字符串 平衡 最长 left

给你一个仅由 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'


最简单直观的做法就是划窗。

每次找到连续的一段 01,然后取 0 和 1 中最小的数量作为长度,然后窗口划到下一个位置。

class Solution {
    public int findTheLongestBalancedSubstring(String s) {
        int ans = 0;
        int left = 0;
        int right = 0;
        while (right < s.length()) {
            int index = right;
            while(left < s.length() && s.charAt(left) == '0') {
                left ++;
            }
            int num0 = left - index;
            if (left >= s.length()) {
                break;
            }
            right = left;
            while(right < s.length() && s.charAt(right) == '1') {
                right ++;
            }
            int num1 = right - left;
            left = right;
            ans = Math.max(ans, Math.min(num0, num1));
        }
        return ans * 2;
    }
}

 

标签:right,int,2609,ans,字符串,平衡,最长,left
From: https://www.cnblogs.com/owlwu/p/17816867.html

相关文章

  • go 数字转字符串
    在Go语言中,你可以使用strconv包中的函数将数字转换为字符串。以下是几种常用的方法:1.使用 strconv.Itoa 函数(整数到字符串):packagemainimport("fmt""strconv")funcmain(){num:=42str:=strconv.Itoa(num)fmt.Println("转换后的字符串:",s......
  • C#判断字符串的显示宽度
    C#判断字符串的显示宽度起因:公司有一个使用项目使用HTML转换为PDF,其中有一个表格,表格的最后一列中的单元格,其字符串超长后会被丢弃,而不是换行到下一行展示(HtmlToPdf渲染引擎导致的,没办法更改)解决方案:根据字符串长度手动添加<br/>换行varsource="ABCD";if(GetLength(sou......
  • 字符串复健(c语言)
    目录目录目录字符串的声明和初始化字符串的内存表示字符串的输入输出输入输出字符串相关函数总结字符串的声明和初始化在C语言中,字符串实际上是使用空字符\0结尾的一维字符数组。声明和初始化一个abc字符串:charsite[4]={'a','b','c','\0'};简化:charsite[]="a......
  • 如何遍历字符串数组元素的每一位.318
    code:intmaxProduct(char**words,intwordsSize){  inta[wordsSize];       //目标字符串转换成整型数组元素  intmaxlen=0;        //最大长度乘积  for(inti=0;i<wordsSize;++i){    //遍历字符串数......
  • 统计范围内的元音字符串数
    题目概述:给你一个下标从0开始的字符串数组words和两个整数:left和right。如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个元音字符串,其中元音字母是'a'、'e'、'i'、'o'、'u'。返回words[i]是元音字符串的数目,其中i在闭区间[left,right]内。解......
  • 8.无重复字符的最长子串
    题目概述:给定一个字符串s,求该字符串中无重复字符的子串的最长长度解题思路:用一个哈希表来记录每个字符最近出现的位置。指针i遍历s,并用另一个指针j从当前位置的下一个位置开始遍历,每次检查当前枚举的字符上一次出现的位置pos是否>=i,如果>=i,说明当前子串中出现重复字符,更新答案,指......
  • leet code 5. 最长回文子串
    5.最长回文子串题目描述给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1<=s.length<=1000s仅由数字和英文......
  • js 拼接字符串带变量(js方法参数单双引号拼接的问题记录)
    小结:外面单引号,里面双引号,然后方法参数给转义的单引号即可(看下面的onClick事件即可)//刷新二级信号表格(增删改操作后)functionreloadSignal(subId){//清空$("#msgAll"+subId).empty();//js手工添加表格varhtmlStart='<spanstyle="posit......
  • oracle函数大全-字符串处理函数
    字符函数——返回字符值这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如:VARCHAR2数值被限制为2000字符(ORACLE8中为4000字符),......
  • Matlab命令集--常用字符串函数
    Matlab命令集--常用字符串函数常用函数eval :运行字符串表示的表达式char :将数组变成字符串double:将数字字符串变成数字字符串操作deblank:去掉字符串末尾的空格findstr:查找字符串lower  :转换为小写strcat :字符串连接组合strcmp :字符串比较strcmpi:字符串比较(......