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. Flip String to Monotone Increasing 翻转字符串到单调递增
Leetcode-926 Flip String to Monotone Increasing(将字符串翻转到单调递增)
LeetCode 926. Flip String to Monotone Increasing (将字符串翻转到单调递增)