Skip to content

Commit bc01faf

Browse files
committed
feat: add rust solution to lc problem: No.2311
No.2311.Longest Binary Subsequence Less Than or Equal to K
1 parent 5ded9f3 commit bc01faf

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,27 @@ public class Solution {
206206
}
207207
```
208208

209+
#### Rust
210+
211+
```rust
212+
impl Solution {
213+
pub fn longest_subsequence(s: String, k: i32) -> i32 {
214+
let mut ans = 0;
215+
let mut v = 0;
216+
let s = s.as_bytes();
217+
for i in (0..s.len()).rev() {
218+
if s[i] == b'0' {
219+
ans += 1;
220+
} else if ans < 30 && (v | (1 << ans)) <= k {
221+
v |= 1 << ans;
222+
ans += 1;
223+
}
224+
}
225+
ans
226+
}
227+
}
228+
```
229+
209230
<!-- tabs:end -->
210231

211232
<!-- solution:end -->

solution/2300-2399/2311.Longest Binary Subsequence Less Than or Equal to K/README_EN.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,27 @@ public class Solution {
204204
}
205205
```
206206

207+
#### Rust
208+
209+
```rust
210+
impl Solution {
211+
pub fn longest_subsequence(s: String, k: i32) -> i32 {
212+
let mut ans = 0;
213+
let mut v = 0;
214+
let s = s.as_bytes();
215+
for i in (0..s.len()).rev() {
216+
if s[i] == b'0' {
217+
ans += 1;
218+
} else if ans < 30 && (v | (1 << ans)) <= k {
219+
v |= 1 << ans;
220+
ans += 1;
221+
}
222+
}
223+
ans
224+
}
225+
}
226+
```
227+
207228
<!-- tabs:end -->
208229

209230
<!-- solution:end -->
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
impl Solution {
2+
pub fn longest_subsequence(s: String, k: i32) -> i32 {
3+
let mut ans = 0;
4+
let mut v = 0;
5+
let s = s.as_bytes();
6+
for i in (0..s.len()).rev() {
7+
if s[i] == b'0' {
8+
ans += 1;
9+
} else if ans < 30 && (v | (1 << ans)) <= k {
10+
v |= 1 << ans;
11+
ans += 1;
12+
}
13+
}
14+
ans
15+
}
16+
}

0 commit comments

Comments
 (0)