LeetCode 2712. 使所有字符相等的最小成本 C#
原题链接
中等
作者:
hpstory
,
2023-06-02 23:50:14
,
所有人可见
,
阅读 123
C# 前后缀分解代码
public class Solution {
public long MinimumCost(string s) {
int n = s.Length;
long[] zero = new long[n + 1];
long[] one = new long[n + 1];
for (int i = n; i > 0; i--){
if (s[i - 1] == '0'){
zero[i - 1] = zero[i];
one[i - 1] = zero[i] + n - i + 1;
}
else{
zero[i - 1] = one[i] + n - i + 1;
one[i - 1] = one[i];
}
}
long result = long.MaxValue;
long a = 0, b = 0;
for (int i = 1; i <= n; i++){
if (s[i - 1] == '0'){
b = a + i;
}
else{
a = b + i;
}
result = Math.Min(result, Math.Min(a + zero[i], b + one[i]));
}
return result;
}
}
C# 代码
public class Solution {
public long MinimumCost(string s) {
int n = s.Length;
long result = 0;
for (int i = 1; i < n; i++){
if (s[i] != s[i - 1]) result += Math.Min(i, n - i);
}
return result;
}
}