Skip to content

Commit e272197

Browse files
committed
feat: add solutions to lc problem: No.1758
No.1758.Minimum Changes To Make Alternating Binary String
1 parent dd81c72 commit e272197

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

solution/1700-1799/1758.Minimum Changes To Make Alternating Binary String/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@
4848

4949
<!-- 这里可写通用的实现逻辑 -->
5050

51+
**方法一:一次遍历**
52+
53+
根据题意,如果得到交替字符串 `01010101...` 所需要的操作数为 `cnt`,那么得到交替字符串 `10101010...` 所需要的操作数为 `n - cnt`
54+
55+
因此,我们只需要遍历一次字符串 `s`,统计出 `cnt` 的值,那么答案即为 `min(cnt, n - cnt)`
56+
57+
时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为字符串 `s` 的长度。
58+
5159
<!-- tabs:start -->
5260

5361
### **Python3**
@@ -94,6 +102,28 @@ public:
94102
};
95103
```
96104
105+
### **Go**
106+
107+
```go
108+
func minOperations(s string) int {
109+
cnt := 0
110+
t := []rune("01")
111+
for i, c := range s {
112+
if t[i&1] != c {
113+
cnt++
114+
}
115+
}
116+
return min(cnt, len(s)-cnt)
117+
}
118+
119+
func min(a, b int) int {
120+
if a < b {
121+
return a
122+
}
123+
return b
124+
}
125+
```
126+
97127
### **...**
98128

99129
```

solution/1700-1799/1758.Minimum Changes To Make Alternating Binary String/README_EN.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,28 @@ public:
8787
};
8888
```
8989
90+
### **Go**
91+
92+
```go
93+
func minOperations(s string) int {
94+
cnt := 0
95+
t := []rune("01")
96+
for i, c := range s {
97+
if t[i&1] != c {
98+
cnt++
99+
}
100+
}
101+
return min(cnt, len(s)-cnt)
102+
}
103+
104+
func min(a, b int) int {
105+
if a < b {
106+
return a
107+
}
108+
return b
109+
}
110+
```
111+
90112
### **...**
91113

92114
```
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
func minOperations(s string) int {
2+
cnt := 0
3+
t := []rune("01")
4+
for i, c := range s {
5+
if t[i&1] != c {
6+
cnt++
7+
}
8+
}
9+
return min(cnt, len(s)-cnt)
10+
}
11+
12+
func min(a, b int) int {
13+
if a < b {
14+
return a
15+
}
16+
return b
17+
}

0 commit comments

Comments
 (0)