LC每日一题|20240606 - 2938. 区分黑球与白球
桌子上有
n个球,每个球的颜色不是黑色,就是白色。给你一个长度为
n、下标从 0 开始的二进制字符串s,其中1和0分别代表黑色和白色的球。在每一步中,你可以选择两个相邻的球并交换它们。
返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的 最小步数」。
提示:
1 <= n == s.length <= 10^5s[i]不是'0',就是'1'。
题目等级:Medium
解题思路
非常简单的一道题~
我们只需要记录0所在的位置,并计算出其归位后所在的位置,然后计算他们到左端的距离和做差即可~
AC代码
class Solution {
fun minimumSteps(s: String): Long {
var zero = 0L
var count = 0
for (i in s.indices) {
if (s[i] == '0') {
zero += i
count ++
}
}
return zero - (count.toLong() * (count - 1)) / 2
}
}