跳到主要内容

1758.生成交替二进制字符串的最少操作数

链接:1758.生成交替二进制字符串的最少操作数
难度:Easy
标签:字符串
简介:给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。返回使 s 变成 交替字符串 所需的 最少 操作数。

题解 1 - cpp

  • 编辑时间:2022-11-29
  • 执行用时:12ms
  • 内存消耗:7.7MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
int minOperations(string s) {
int cnt1 = 0, cnt2 = 0, cur = 1;
for (auto &c : s) {
if (c - '0' == cur) cnt1++;
else cnt2++;
cur ^= 1;
}
return min(cnt1, cnt2);
}
};

题解 2 - cpp

  • 编辑时间:2022-11-29
  • 内存消耗:6.8MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
int minOperations(string s) {
int n = s.size(), cnt = 0, cur = 1;
for (int i = 0; i < n; i++, cur^=1) {
if (s[i] - '0' == cur) cnt++;
}
return min(cnt, n - cnt);
}
};