File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ // traverse and swap indices
2
+ class Solution {
3
+ fun maximumOddBinaryNumber (s : String ): String {
4
+ val sArr = s.toCharArray()
5
+ var left = 0
6
+
7
+ for (i in 0 until sArr.size) {
8
+ if (sArr[i] == ' 1' ) {
9
+ sArr[i] = sArr[left].also { sArr[left] = sArr[i] }
10
+ left++
11
+ }
12
+ }
13
+
14
+ sArr[left - 1 ] = sArr[sArr.lastIndex].also { sArr[sArr.lastIndex] = sArr[left - 1 ] }
15
+ return sArr.joinToString(" " )
16
+ }
17
+ }
18
+
19
+ // Count 1's and build at once
20
+ class Solution {
21
+ fun maximumOddBinaryNumber (s : String ): String {
22
+ var count = 0
23
+ for (c in s) {
24
+ if (c == ' 1' ) count++
25
+ }
26
+
27
+ return " 1" .repeat(count - 1 ) + " 0" .repeat(s.length - count) + " 1"
28
+ }
29
+ }
30
+
31
+ // Rolling string builder
32
+ class Solution {
33
+ fun maximumOddBinaryNumber (s : String ) = buildString {
34
+ var count = s.count { it == ' 1' } - 1
35
+ val n = s.length
36
+
37
+ for (i in 0 until n - 1 ) {
38
+ if (count > 0 ) {
39
+ append(" 1" )
40
+ count--
41
+ } else {
42
+ append(" 0" )
43
+ }
44
+ }
45
+
46
+ append(" 1" )
47
+ return toString()
48
+ }
49
+ }
You can’t perform that action at this time.
0 commit comments