leetcode 1758
資深大佬 : yujianwjj 2
https://leetcode.com/problems/minimum-changes-to-make-alternating-binary-string/
题目比较简单,只有 010101… 或者 101010… 两个方案 最开始我的解法是:
func minOperations(s string) int { count1 := 0 // 010101... for i := 0; i < len(s); i++ { if int(s[i] - '0') != i % 2 { count1++ } } count2 := 0 // 10101010... for i := 0; i < len(s); i++ { if int(s[i] - '0') != (i+1) % 2 { count2++ } } return min(count1, count2) }
后来发现更简单一点的
func minOperations(s string) int { count1 := 0 // 010101... for i := 0; i < len(s); i++ { if int(s[i] - '0') != i % 2 { count1++ } } return min(count1, len(s)-count1) }
我的疑问是如何用数学证明这两种方案加起来刚好是 s 的长度。
大佬有話說 (1)