首页 > 试题广场 >

最长区间

[编程题]最长区间
  • 热度指数:4570 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
拉齐有一个 01 序列,他可以对这个序列进行任意多次变换,每次变换都是把序列的最后若干个元素放到最前面,例如:010011,将最后 个元素 011 放到最前面,序列变为 011010 。所有变换结束后,拉齐需要挑出一个全为 的连续区间,要求最大化区间长度。

数据范围:输入序列长度满足

输入描述:
共一行,一个01串,仅包含0或1。序列长度不超过50000。


输出描述:
一个整数,表示最长区间的长度。
示例1

输入

11011

输出

4

说明

把最后两个 1 放到最前面,形成一个长度为 4 的全 1 区间 
头像 你吃菜吗
发表于 2023-02-18 01:26:18
思路: 最重要的是理解序列变换的本质是:把序列看作一个首尾相连的环,不管怎样变换,序列里元素的相对位置都没有变。那么我们的任务就很清晰了,就是在一个元素固定的环内找到元素全为1的最长连续序列。 处理: 一个比较简单的处理方法就是把序列看作环之后,再处理为一个以0开头(或者没有0)的序列,然后从头进行 展开全文
头像 laglangyue
发表于 2020-06-27 22:02:34
import java.util.Scanner; public class Main { public static void main(String[] args){ String s = new Scanner(System.in).nextLine(); 展开全文
头像 重生之我要当分子
发表于 2025-01-01 14:59:27
解题思路 这是一个字符串循环移位问题,需要找到所有可能的移位中最长的连续1序列。 关键点: 将字符串复制一遍可以处理所有移位情况 使用双指针技术查找连续1序列 注意结果不能超过原字符串长度 算法步骤: 复制字符串拼接到原串后面 使用双指针遍历查找连续1 取最大长度和原串长度的较小值 代码 展开全文