题目:
桌子上有 n
个球,每个球的颜色不是黑色,就是白色。
给你一个长度为 n
、下标从 0 开始的二进制字符串 s
,其中 1
和 0
分别代表黑色和白色的球。
在每一步中,你可以选择两个相邻的球并交换它们。
返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的 最小步数]
思路:
因为最终得到得结果形如000000011111111,所以先记录“1”出现得次数,遍历到“0”时,需要将“0”向左移动,移动的次数就是当前“1”出现的次数
代码:
class Solution:
def minimumSteps(self, s: str) -> int:
n = len(s)
sum,res = 0,0
for i in range(n):
if s[i] == '1':
sum += 1
else:
res += sum
return res
心得:
笑死用双指针给自己绕晕了(还是太菜),多写几个测试用例,找找规律就出结果了
原题链接:https://leetcode.cn/problems/separate-black-and-white-balls/