博客
关于我
Codeforces Round #652 (Div. 2) B. AccurateLee(思维)
阅读量:714 次
发布时间:2019-03-21

本文共 1122 字,大约阅读时间需要 3 分钟。

给你一个01字符串,你可以删除其中的一些子序列。要求是当遇到1和0这两个连续字符时,可以删掉一个字符。目标是通过删除尽可能多的字符,得到一个最短且字典序最小的字符串。

为了实现这个目标,我们需要找到一个关键的子结构。具体来说,我们必须找到最小位置的1和最大的0。这样,中间可以全部删掉,只保留最小的1和最大的0,并且为了字典序最小,我们只能保留最大的0。

例如,对于字符串"111110000",我们可以发现其中只有一个最小的1和最大的0。因此,我们可以将1和0保留下来,中间的0全部删除,最终得到的字符串为"0"。这既是最短的,也是字典序最小的。

再看一个例子:"1010001010100"。同样地,我们可以找到最小的1(位置1)和最大的0(位置13)。因此,中间全部删除,只保留位置1的1和位置13的0,得到的字符串为"0"。这样既是最短的,也是字典序最小的结果。

因此,我们可以得出结论:只要找到字符串中的最小位置的1和最大的位置的0,就可以将中间的字符全部删除。这样保留了最小的1和最大的0,后者对于字典序最小的重要性尤为突出。

接下来,我们来看具体的实现。首先,我们需要遍历整个字符串,找到最小位置的1,即num1,然后找到最大的位置的0,即num0。如果num1小于num0,说明这个1在0之前,那么这个1后面还没有遇到任何0,这个时候,我们不能删除任何字符,直接返回原字符串。

否则,我们可以删除中间的所有字符。最终,我们可以只保留位置num1处的1,位置num0处的0,以及它们之间的一部分。为了达到最短且字典序最小的效果,我们可以直接输出位置num1处的1以及位置num0处的0之间的字符(包括两者)。具体来说,我们需要先输出位置num1到num0的字符,然后又输出从num1到num0的字符。这可能有些重复,最终我们需要仔细处理这种情况。

在代码实现中,我们可以通过以下方式实现:

  • 遍历字符串,找到所有0的位置,并记录最大的索引num0。
  • 遍历字符串,找到所有1的位置,并记录最小的索引num1。
  • 如果num1大于num0,说明没有0在1之后,无法删减,直接返回字符串。
  • 否则,输出位置num1的字符,然后从num0开始遍历,直到字符串末尾。
  • 这样,我们已经实现了删除中间字符的目标,并且保留了最小的1和最大的0。最终,我们输出了一个最短且字典序最小的字符串。

    通过这种方法,我们解决了问题。并且,我们的逻辑是正确的,因为它简洁且高效。对于大字符串,这种方法的时间复杂度是O(n),非常适合处理大规模输入。

    总的来说,这种方法既能删除多余的字符,又能保证最优的字典序,完全符合题目要求。代码实现简单且有效,适用于各种情况。

    转载地址:http://ciirz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV中基于已知相机方向的透视变形
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>
    opencv图像分割2-GMM
    查看>>
    OpenCV:概念、历史、应用场景示例、核心模块、安装配置
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    Openresty框架入门详解
    查看>>
    OpenResty(2):OpenResty开发环境搭建
    查看>>
    openshift搭建Istio企业级实战
    查看>>
    OpenStack 网络服务Neutron详解
    查看>>
    Openstack(两控制节点+四计算节点)-1
    查看>>
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    OpenStack安装部署实战
    查看>>
    OpenStack的基本概念与架构详解
    查看>>