【Leetcode】【每日一题】2311. 小于等于 K 的最长二进制子序列

31 阅读1分钟

子序列与子串理解错误了,一直以为是子串,看了半天思路没对上,

【思路】 倒序遍历,如果是1,则比大小,如果是0则添加。

【代码】


class Solution:
    def longestSubsequence(self, s: str, k: int) -> int:
        """
        倒序遍历字符串
        """
        if int(s,2) <= k:
            return len(s)
        ans = ""
        sign = True
        for char in s[::-1]:
            if char == '1':
                if sign:
                    if int(char+ans,2)>k:
                        sign = False
                    else:
                        ans = char + ans
            else:
                ans = char + ans
        return len(ans)