Longest Binary Subsequence Less Than or Equal to K LeetCode solution in Java
1class Solution {2public int longestSubsequence(String s, int k) {3int z = 0;4// count zero5for (int i = 0; i < s.length(); i++) if (s.charAt(i) == '0') z++;67int num = 0, base = 1, len = 0;8// take as many ones from right as possible until they do not make the num>k9for (int i = s.length() - 1; i >= 0; i--) {1011if (num + base > k) break;12if (s.charAt(i) == '1') {13num += base;14} else {15// remove already taken zeros from zeros count16z--;17}18base *= 2;19len++;20}2122return len + z;23}24}