/* * @Author: LetMeFly * @Date: 2025-06-26 22:16:30 * @LastEditors: LetMeFly.xyz * @LastEditTime: 2025-06-26 22:43:01 */ classSolution { public: intlongestSubsequence(string s, int k){ int ans = 0, val = 0, k_length = 32 - __builtin_clz(k), n = s.size(); // k=0时k_length=0计算错误也不受影响 for (int i = 0; i < n; i++) { if (s[n - i - 1] == '0') { ans++; continue; } if (i < k_length && val + (1 << i) <= k) { val += 1 << i; ans++; } } return ans; } };
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
''' Author: LetMeFly Date: 2025-06-26 22:16:30 LastEditors: LetMeFly.xyz LastEditTime: 2025-06-26 22:38:54 ''' classSolution: deflongestSubsequence(self, s: str, k: int) -> int: ans, val, k_length = 0, 0, k.bit_length() for i, c inenumerate(s[::-1]): if c == '0': ans += 1 continue if i < k_length and val + (1 << i) <= k: ans += 1 val += 1 << i return ans
funclongestSubsequence(s string, k int) (ans int) { val, n, lenK := 0, len(s), bits.Len(uint(k)) for i := 0; i < n; i++ { if s[n - i - 1] == '0' { ans++ continue } if i < lenK && val + (1 << i) <= k { ans++ val += 1 << i } } return }