class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.longestSubsequence("1001010",5));
}
public int longestSubsequence(String s, int k) {
int deleted = 0;
char[] arr = s.toCharArray();
int i = 0;
while(i< arr.length ){
if(smaller(arr,k)){
break;
}
while(i< arr.length && arr[i] == '0' ) {
i++;
}
if( i == arr.length){
break;
}
deleted++;
arr[i] = '0';
i++;
}
return s.length() - deleted;
}
public boolean smaller(char[] arr,int k){
int len = arr.length - 1 ;
for (int i = len; i >=31; i--) {
int pos = len - i;
if(arr[pos] == '1'){
return false;
}
}
int ans = 0;
int x = Math.min(30,len);
for(int i = x;i>=0;i--){
ans += (1<<i)*(arr[len-i]-'0');
}
return ans <= k;
}
}