Skip to content

Commit 42d1713

Browse files
committed
feat: add rust solution to lc problem: No.0003
No.0003.Longest Substring Without Repeating Characters
1 parent 28889fd commit 42d1713

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,34 @@ proc lengthOfLongestSubstring(s: string): int =
245245
result = res # result has the default return value
246246
```
247247

248+
### **Rust**
249+
250+
```rust
251+
use std::collections::HashSet;
252+
253+
impl Solution {
254+
pub fn length_of_longest_substring(s: String) -> i32 {
255+
let n = s.len();
256+
let cs: Vec<char> = s.chars().collect();
257+
let mut set = HashSet::new();
258+
let mut l = 0;
259+
let mut r = 0;
260+
let mut res = 0;
261+
while r != n {
262+
let k = cs[r];
263+
while set.contains(&k) {
264+
set.remove(&cs[l]);
265+
l += 1;
266+
}
267+
set.insert(k);
268+
res = res.max(set.len());
269+
r += 1;
270+
}
271+
res as i32
272+
}
273+
}
274+
```
275+
248276
### **...**
249277

250278
```

solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,34 @@ proc lengthOfLongestSubstring(s: string): int =
227227
result = res # result has the default return value
228228
```
229229

230+
### **Rust**
231+
232+
```rust
233+
use std::collections::HashSet;
234+
235+
impl Solution {
236+
pub fn length_of_longest_substring(s: String) -> i32 {
237+
let n = s.len();
238+
let cs: Vec<char> = s.chars().collect();
239+
let mut set = HashSet::new();
240+
let mut l = 0;
241+
let mut r = 0;
242+
let mut res = 0;
243+
while r != n {
244+
let k = cs[r];
245+
while set.contains(&k) {
246+
set.remove(&cs[l]);
247+
l += 1;
248+
}
249+
set.insert(k);
250+
res = res.max(set.len());
251+
r += 1;
252+
}
253+
res as i32
254+
}
255+
}
256+
```
257+
230258
### **...**
231259

232260
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use std::collections::HashSet;
2+
3+
impl Solution {
4+
pub fn length_of_longest_substring(s: String) -> i32 {
5+
let n = s.len();
6+
let cs: Vec<char> = s.chars().collect();
7+
let mut set = HashSet::new();
8+
let mut l = 0;
9+
let mut r = 0;
10+
let mut res = 0;
11+
while r != n {
12+
let k = cs[r];
13+
while set.contains(&k) {
14+
set.remove(&cs[l]);
15+
l += 1;
16+
}
17+
set.insert(k);
18+
res = res.max(set.len());
19+
r += 1;
20+
}
21+
res as i32
22+
}
23+
}

0 commit comments

Comments
 (0)