Longest Binary Subsequence Less Than or Equal to K LeetCode solution in Java

1
class Solution {
2
public int longestSubsequence(String s, int k) {
3
int z = 0;
4
// count zero
5
for (int i = 0; i < s.length(); i++) if (s.charAt(i) == '0') z++;
6

7
int num = 0, base = 1, len = 0;
8
// take as many ones from right as possible until they do not make the num>k
9
for (int i = s.length() - 1; i >= 0; i--) {
10

11
if (num + base > k) break;
12
if (s.charAt(i) == '1') {
13
num += base;
14
} else {
15
// remove already taken zeros from zeros count
16
z--;
17
}
18
base *= 2;
19
len++;
20
}
21

22
return len + z;
23
}
24
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0