博客
关于我
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/

    你可能感兴趣的文章
    mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
    查看>>
    Mysql group by
    查看>>
    MySQL I 有福啦,窗口函数大大提高了取数的效率!
    查看>>
    mysql id自动增长 初始值 Mysql重置auto_increment初始值
    查看>>
    MySQL in 太多过慢的 3 种解决方案
    查看>>
    MySQL InnoDB 三大文件日志,看完秒懂
    查看>>
    Mysql InnoDB 数据更新导致锁表
    查看>>
    Mysql Innodb 锁机制
    查看>>
    MySQL InnoDB中意向锁的作用及原理探
    查看>>
    MySQL InnoDB事务隔离级别与锁机制深入解析
    查看>>
    Mysql InnoDB存储引擎 —— 数据页
    查看>>
    Mysql InnoDB存储引擎中的checkpoint技术
    查看>>
    Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
    查看>>
    MySQL InnoDB引擎的锁机制详解
    查看>>
    Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
    查看>>
    mysql InnoDB数据存储引擎 的B+树索引原理
    查看>>
    mysql innodb通过使用mvcc来实现可重复读
    查看>>
    mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
    查看>>
    mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
    查看>>
    Mysql join原理
    查看>>