Python描述 LeetCode 926. 将字符串翻转到单调递增

Posted 亓官劼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python描述 LeetCode 926. 将字符串翻转到单调递增相关的知识,希望对你有一定的参考价值。

Python描述 LeetCode 926. 将字符串翻转到单调递增

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.


本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的,那么该字符串是 单调递增 的。

给你一个二进制字符串 s,你可以将任何 0 翻转为 1 或者将 1 翻转为 0

返回使 s 单调递增的最小翻转次数。

示例 1:

输入:s = "00110"
输出:1
解释:翻转最后一位得到 00111.

示例 2:

输入:s = "010110"
输出:2
解释:翻转得到 011111,或者是 000111。

示例 3:

输入:s = "00011000"
输出:2
解释:翻转得到 00000000。

提示:

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

解题思路

前缀和。记录前i个中1的数量,那么len(S)-i中0的数量则为len(S)-i-(tmp[-1]-tmp[i]),以i为分割,需要将前面的1换为0,后面的0换成1,取最小值即可

Python描述

class Solution(object):
    def minFlipsMonoIncr(self, S):
        # 前缀和,tmp[i]表示S[0:i]中1的个数,S[i:]中0的个数为len(S)-i-(tmp[-1]-tmp[i])
        tmp = [0]
        for item in S:
            tmp.append(tmp[-1] + int(item))
        res = len(S)
        # 以i为分割,左边为0,右面为1
        for i in range(len(tmp)):
            # 以当前为分割的代价
            cost = tmp[i] + len(S)-i-(tmp[-1]-tmp[i])
            res = min(cost,res)
        return res

以上是关于Python描述 LeetCode 926. 将字符串翻转到单调递增的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 926. Flip String to Monotone Increasing

leetcode中等926将字符串翻转到单调递增

[LeetCode] 926. Flip String to Monotone Increasing 翻转字符串到单调递增

Leetcode-926 Flip String to Monotone Increasing(将字符串翻转到单调递增)

LeetCode 926. Flip String to Monotone Increasing (将字符串翻转到单调递增)

如何使用 PHP 将字节流发送到套接字?