返回介绍

solution / 2900-2999 / 2914.Minimum Number of Changes to Make Binary String Beautiful / README_EN

发布于 2024-06-17 01:02:58 字数 4138 浏览 0 评论 0 收藏 0

2914. Minimum Number of Changes to Make Binary String Beautiful

中文文档

Description

You are given a 0-indexed binary string s having an even length.

A string is beautiful if it's possible to partition it into one or more substrings such that:

  • Each substring has an even length.
  • Each substring contains only 1's or only 0's.

You can change any character in s to 0 or 1.

Return _the minimum number of changes required to make the string _s _beautiful_.

 

Example 1:

Input: s = "1001"
Output: 2
Explanation: We change s[1] to 1 and s[3] to 0 to get string "1100".
It can be seen that the string "1100" is beautiful because we can partition it into "11|00".
It can be proven that 2 is the minimum number of changes needed to make the string beautiful.

Example 2:

Input: s = "10"
Output: 1
Explanation: We change s[1] to 1 to get string "11".
It can be seen that the string "11" is beautiful because we can partition it into "11".
It can be proven that 1 is the minimum number of changes needed to make the string beautiful.

Example 3:

Input: s = "0000"
Output: 0
Explanation: We don't need to make any changes as the string "0000" is beautiful already.

 

Constraints:

  • 2 <= s.length <= 105
  • s has an even length.
  • s[i] is either '0' or '1'.

Solutions

Solution 1: Counting

We only need to traverse all odd indices $1, 3, 5, \cdots$ of the string $s$. If the current odd index is different from the previous index, i.e., $s[i] \ne s[i - 1]$, we need to modify the current character so that $s[i] = s[i - 1]$. Therefore, the answer needs to be incremented by $1$.

After the traversal, we return the answer.

The time complexity is $O(n)$, where $n$ is the length of the string $s$. The space complexity is $O(1)$.

class Solution:
  def minChanges(self, s: str) -> int:
    return sum(s[i] != s[i - 1] for i in range(1, len(s), 2))
class Solution {
  public int minChanges(String s) {
    int ans = 0;
    for (int i = 1; i < s.length(); i += 2) {
      if (s.charAt(i) != s.charAt(i - 1)) {
        ++ans;
      }
    }
    return ans;
  }
}
class Solution {
public:
  int minChanges(string s) {
    int ans = 0;
    int n = s.size();
    for (int i = 1; i < n; i += 2) {
      ans += s[i] != s[i - 1];
    }
    return ans;
  }
};
func minChanges(s string) (ans int) {
  for i := 1; i < len(s); i += 2 {
    if s[i] != s[i-1] {
      ans++
    }
  }
  return
}
function minChanges(s: string): number {
  let ans = 0;
  for (let i = 1; i < s.length; i += 2) {
    if (s[i] !== s[i - 1]) {
      ++ans;
    }
  }
  return ans;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文