leetcode

package
v0.0.0-...-3200de1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2023 License: MIT Imports: 0 Imported by: 0

README

1758. Minimum Changes To Make Alternating Binary String

题目

You are given a string s consisting only of the characters '0' and '1'. In one operation, you can change any '0' to '1' or vice versa.

The string is called alternating if no two adjacent characters are equal. For example, the string "010" is alternating, while the string "0100" is not.

Return the minimum number of operations needed to make s alternating.

Example 1:

Input: s = "0100"
Output: 1
Explanation: If you change the last character to '1', s will be "0101", which is alternating.

Example 2:

Input: s = "10"
Output: 0
Explanation: s is already alternating.

Example 3:

Input: s = "1111"
Output: 2
Explanation: You need two operations to reach "0101" or "1010".

Constraints:

  • 1 <= s.length <= 104
  • s[i] is either '0' or '1'.

题目大意

你将得到一个仅包含字符“ 0”和“ 1”的字符串 s。 在一项操作中,你可以将任何 '0' 更改为 '1',反之亦然。 如果两个相邻字符都不相等,则该字符串称为交替字符串。 例如,字符串“ 010”是交替的,而字符串“ 0100”则不是。 返回使 s 交替所需的最小操作数。

解题思路

  • 简单题。利用数组下标奇偶交替性来判断交替字符串。交替字符串有 2 种,一个是 '01010101……' 还有一个是 '1010101010……',这两个只需要计算出一个即可,另外一个利用 len(s) - res 就是答案。

代码

package leetcode

func minOperations(s string) int {
	res := 0
	for i := 0; i < len(s); i++ {
		if int(s[i]-'0') != i%2 {
			res++
		}
	}
	return min(res, len(s)-res)
}

func min(a, b int) int {
	if a > b {
		return b
	}
	return a
}

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL