Skip to content

Commit fd4b14a

Browse files
committed
feat: add solutions to lc problem: No.1864. Minimum Number of Swaps to Make the Binary String Alternating
1 parent 89b242b commit fd4b14a

File tree

4 files changed

+156
-4
lines changed

4 files changed

+156
-4
lines changed

solution/1800-1899/1864.Minimum Number of Swaps to Make the Binary String Alternating/README.md

+52-2
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,65 @@
5858
<!-- 这里可写当前语言的特殊实现逻辑 -->
5959

6060
```python
61-
61+
class Solution:
62+
def minSwaps(self, s: str) -> int:
63+
s0n0 = s0n1 = s1n0 = s1n1 = 0
64+
for i in range(len(s)):
65+
if (i & 1) == 0:
66+
if s[i] != '0':
67+
s0n0 += 1
68+
else:
69+
s1n1 += 1
70+
else:
71+
if s[i] != '0':
72+
s1n0 += 1
73+
else:
74+
s0n1 += 1
75+
if s0n0 != s0n1 and s1n0 != s1n1:
76+
return -1
77+
if s0n0 != s0n1:
78+
return s1n0
79+
if s1n0 != s1n1:
80+
return s0n0
81+
return min(s0n0, s1n0)
6282
```
6383

6484
### **Java**
6585

6686
<!-- 这里可写当前语言的特殊实现逻辑 -->
6787

6888
```java
69-
89+
class Solution {
90+
public int minSwaps(String s) {
91+
int s0n0 = 0, s0n1 = 0;
92+
int s1n0 = 0, s1n1 = 0;
93+
for (int i = 0; i < s.length(); ++i) {
94+
if ((i & 1) == 0) {
95+
if (s.charAt(i) != '0') {
96+
s0n0 += 1;
97+
} else {
98+
s1n1 += 1;
99+
}
100+
} else {
101+
if (s.charAt(i) != '0') {
102+
s1n0 += 1;
103+
} else {
104+
s0n1 += 1;
105+
}
106+
}
107+
}
108+
if (s0n0 != s0n1 && s1n0 != s1n1) {
109+
return -1;
110+
}
111+
if (s0n0 != s0n1) {
112+
return s1n0;
113+
}
114+
if (s1n0 != s1n1) {
115+
return s0n0;
116+
}
117+
return Math.min(s0n0, s1n0);
118+
}
119+
}
70120
```
71121

72122
### **JavaScript**

solution/1800-1899/1864.Minimum Number of Swaps to Make the Binary String Alternating/README_EN.md

+52-2
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,63 @@ The string is now alternating.
5151
### **Python3**
5252

5353
```python
54-
54+
class Solution:
55+
def minSwaps(self, s: str) -> int:
56+
s0n0 = s0n1 = s1n0 = s1n1 = 0
57+
for i in range(len(s)):
58+
if (i & 1) == 0:
59+
if s[i] != '0':
60+
s0n0 += 1
61+
else:
62+
s1n1 += 1
63+
else:
64+
if s[i] != '0':
65+
s1n0 += 1
66+
else:
67+
s0n1 += 1
68+
if s0n0 != s0n1 and s1n0 != s1n1:
69+
return -1
70+
if s0n0 != s0n1:
71+
return s1n0
72+
if s1n0 != s1n1:
73+
return s0n0
74+
return min(s0n0, s1n0)
5575
```
5676

5777
### **Java**
5878

5979
```java
60-
80+
class Solution {
81+
public int minSwaps(String s) {
82+
int s0n0 = 0, s0n1 = 0;
83+
int s1n0 = 0, s1n1 = 0;
84+
for (int i = 0; i < s.length(); ++i) {
85+
if ((i & 1) == 0) {
86+
if (s.charAt(i) != '0') {
87+
s0n0 += 1;
88+
} else {
89+
s1n1 += 1;
90+
}
91+
} else {
92+
if (s.charAt(i) != '0') {
93+
s1n0 += 1;
94+
} else {
95+
s0n1 += 1;
96+
}
97+
}
98+
}
99+
if (s0n0 != s0n1 && s1n0 != s1n1) {
100+
return -1;
101+
}
102+
if (s0n0 != s0n1) {
103+
return s1n0;
104+
}
105+
if (s1n0 != s1n1) {
106+
return s0n0;
107+
}
108+
return Math.min(s0n0, s1n0);
109+
}
110+
}
61111
```
62112

63113
### **JavaScript**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution {
2+
public int minSwaps(String s) {
3+
int s0n0 = 0, s0n1 = 0;
4+
int s1n0 = 0, s1n1 = 0;
5+
for (int i = 0; i < s.length(); ++i) {
6+
if ((i & 1) == 0) {
7+
if (s.charAt(i) != '0') {
8+
s0n0 += 1;
9+
} else {
10+
s1n1 += 1;
11+
}
12+
} else {
13+
if (s.charAt(i) != '0') {
14+
s1n0 += 1;
15+
} else {
16+
s0n1 += 1;
17+
}
18+
}
19+
}
20+
if (s0n0 != s0n1 && s1n0 != s1n1) {
21+
return -1;
22+
}
23+
if (s0n0 != s0n1) {
24+
return s1n0;
25+
}
26+
if (s1n0 != s1n1) {
27+
return s0n0;
28+
}
29+
return Math.min(s0n0, s1n0);
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution:
2+
def minSwaps(self, s: str) -> int:
3+
s0n0 = s0n1 = s1n0 = s1n1 = 0
4+
for i in range(len(s)):
5+
if (i & 1) == 0:
6+
if s[i] != '0':
7+
s0n0 += 1
8+
else:
9+
s1n1 += 1
10+
else:
11+
if s[i] != '0':
12+
s1n0 += 1
13+
else:
14+
s0n1 += 1
15+
if s0n0 != s0n1 and s1n0 != s1n1:
16+
return -1
17+
if s0n0 != s0n1:
18+
return s1n0
19+
if s1n0 != s1n1:
20+
return s0n0
21+
return min(s0n0, s1n0)

0 commit comments

Comments
 (0)