aboutsummaryrefslogtreecommitdiff
path: root/longest_binary_subseq_leq_k.py
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-06-25 19:23:59 -0600
committerJack Sangdahl <[email protected]>2025-06-25 19:23:59 -0600
commit0af3b7c97c98d1e13c0170d900cbeb8d97f84ec5 (patch)
tree68576d703ade1715f50ffc0fe2237286aa6a42ca /longest_binary_subseq_leq_k.py
parentd25a259a2484f14978ffe5e1cc350560e30445b0 (diff)
downloadleetcode-0af3b7c97c98d1e13c0170d900cbeb8d97f84ec5.tar.gz
leetcode-0af3b7c97c98d1e13c0170d900cbeb8d97f84ec5.zip
2311. longest binary subsequence less than or equal to k
Diffstat (limited to 'longest_binary_subseq_leq_k.py')
-rw-r--r--longest_binary_subseq_leq_k.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/longest_binary_subseq_leq_k.py b/longest_binary_subseq_leq_k.py
new file mode 100644
index 0000000..e07204a
--- /dev/null
+++ b/longest_binary_subseq_leq_k.py
@@ -0,0 +1,29 @@
+# 2311. Longest Binary Subsequence Less Than or Equal to K
+
+"""
+you are given a binary string 's' and a positive integer 'k'. return the
+length of the longest subsequence of 's' that makes up a binary number less
+than or equal to 'k'. note the subsequence can contain leading zeros, the
+empty string is considered to be equal to 0, and a subsequence is a string
+that can be derived from another string by deleting some or no characters
+without changing the order of the remaining characters.
+"""
+
+
+class Solution(object):
+ def longestSubsequence(self, s, k):
+ """
+ :type s: str
+ :type k: int
+ :rtype: int
+ """
+ i = 0
+ while int(s[-i - 1 :], 2) <= k and i < 32 and i < len(s):
+ i += 1
+ return s[:-i].count("0") + i
+
+
+if __name__ == "__main__":
+ obj = Solution()
+ print(obj.longestSubsequence(s="1001010", k=5))
+ print(obj.longestSubsequence(s="00101001", k=1))