Skip to content

Commit 7215ec0

Browse files
committed
Add leetcode problem 2311 python version
1 parent 7ec4e18 commit 7215ec0

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

leetcode/src/02311_longest_binary_subsequence_less_than_or_equal_to_k/__init__.py

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def longestSubsequence(self, s: str, k: int) -> int:
3+
cur_sum = 0
4+
res = 0
5+
bit_len = k.bit_length()
6+
for i, ch in enumerate(s[::-1]):
7+
if ch == "1":
8+
if i < bit_len and (1 << i) + cur_sum <= k:
9+
cur_sum += 1 << i
10+
res += 1
11+
else:
12+
res += 1
13+
return res
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import unittest
2+
from .solution import Solution
3+
4+
5+
class TestSolution(unittest.TestCase):
6+
def test_longestSubsequence(self):
7+
s = Solution()
8+
self.assertEqual(s.longestSubsequence("1001010", 5), 5)
9+
self.assertEqual(s.longestSubsequence("00101001", 1), 6)
10+
self.assertEqual(
11+
s.longestSubsequence(
12+
"111100010000011101001110001111000000001011101111111110111000011111011000010101110100110110001111001001011001010011010000011111101001101000000101101001110110000111101011000101",
13+
11713332,
14+
),
15+
96,
16+
)
17+
18+
19+
if __name__ == "__main__":
20+
unittest.main()

0 commit comments

Comments
 (0)