From bc01fafbbeaead722eb65cbfe780988d4f1fde39 Mon Sep 17 00:00:00 2001 From: yanglbme Date: Thu, 26 Jun 2025 06:51:52 +0800 Subject: [PATCH] feat: add rust solution to lc problem: No.2311 No.2311.Longest Binary Subsequence Less Than or Equal to K --- .../README.md | 21 +++++++++++++++++++ .../README_EN.md | 21 +++++++++++++++++++ .../Solution.rs | 16 ++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/Solution.rs diff --git a/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README.md b/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README.md index 0710acaa06bbc..46e94a9aa522c 100644 --- a/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README.md +++ b/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README.md @@ -206,6 +206,27 @@ public class Solution { } ``` +#### Rust + +```rust +impl Solution { + pub fn longest_subsequence(s: String, k: i32) -> i32 { + let mut ans = 0; + let mut v = 0; + let s = s.as_bytes(); + for i in (0..s.len()).rev() { + if s[i] == b'0' { + ans += 1; + } else if ans < 30 && (v | (1 << ans)) <= k { + v |= 1 << ans; + ans += 1; + } + } + ans + } +} +``` + diff --git a/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README_EN.md b/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README_EN.md index 9b28e43961e63..2e07ad5f1672d 100644 --- a/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README_EN.md +++ b/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README_EN.md @@ -204,6 +204,27 @@ public class Solution { } ``` +#### Rust + +```rust +impl Solution { + pub fn longest_subsequence(s: String, k: i32) -> i32 { + let mut ans = 0; + let mut v = 0; + let s = s.as_bytes(); + for i in (0..s.len()).rev() { + if s[i] == b'0' { + ans += 1; + } else if ans < 30 && (v | (1 << ans)) <= k { + v |= 1 << ans; + ans += 1; + } + } + ans + } +} +``` + diff --git a/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/Solution.rs b/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/Solution.rs new file mode 100644 index 0000000000000..f1570779f5e5e --- /dev/null +++ b/solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/Solution.rs @@ -0,0 +1,16 @@ +impl Solution { + pub fn longest_subsequence(s: String, k: i32) -> i32 { + let mut ans = 0; + let mut v = 0; + let s = s.as_bytes(); + for i in (0..s.len()).rev() { + if s[i] == b'0' { + ans += 1; + } else if ans < 30 && (v | (1 << ans)) <= k { + v |= 1 << ans; + ans += 1; + } + } + ans + } +}