Skip to content

Commit 9194483

Browse files
committed
feat: update rust solution to lc problem: No.0003
No.0003.Longest Substring Without Repeating Characters
1 parent d51d4e4 commit 9194483

File tree

3 files changed

+39
-48
lines changed

3 files changed

+39
-48
lines changed

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

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -245,23 +245,20 @@ use std::collections::HashSet;
245245

246246
impl Solution {
247247
pub fn length_of_longest_substring(s: String) -> i32 {
248-
let n = s.len();
249-
let cs: Vec<char> = s.chars().collect();
248+
let s = s.as_bytes();
250249
let mut set = HashSet::new();
251-
let mut l = 0;
252-
let mut r = 0;
253-
let mut res = 0;
254-
while r != n {
255-
let k = cs[r];
256-
while set.contains(&k) {
257-
set.remove(&cs[l]);
258-
l += 1;
259-
}
260-
set.insert(k);
261-
res = res.max(set.len());
262-
r += 1;
263-
}
264-
res as i32
250+
let mut i = 0;
251+
s.iter()
252+
.map(|c| {
253+
while set.contains(&c) {
254+
set.remove(&s[i]);
255+
i += 1;
256+
}
257+
set.insert(c);
258+
set.len()
259+
})
260+
.max()
261+
.unwrap_or(0) as i32
265262
}
266263
}
267264
```

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

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -227,23 +227,20 @@ use std::collections::HashSet;
227227

228228
impl Solution {
229229
pub fn length_of_longest_substring(s: String) -> i32 {
230-
let n = s.len();
231-
let cs: Vec<char> = s.chars().collect();
230+
let s = s.as_bytes();
232231
let mut set = HashSet::new();
233-
let mut l = 0;
234-
let mut r = 0;
235-
let mut res = 0;
236-
while r != n {
237-
let k = cs[r];
238-
while set.contains(&k) {
239-
set.remove(&cs[l]);
240-
l += 1;
241-
}
242-
set.insert(k);
243-
res = res.max(set.len());
244-
r += 1;
245-
}
246-
res as i32
232+
let mut i = 0;
233+
s.iter()
234+
.map(|c| {
235+
while set.contains(&c) {
236+
set.remove(&s[i]);
237+
i += 1;
238+
}
239+
set.insert(c);
240+
set.len()
241+
})
242+
.max()
243+
.unwrap_or(0) as i32
247244
}
248245
}
249246
```

solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.rs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,19 @@ use std::collections::HashSet;
22

33
impl Solution {
44
pub fn length_of_longest_substring(s: String) -> i32 {
5-
let n = s.len();
6-
let cs: Vec<char> = s.chars().collect();
5+
let s = s.as_bytes();
76
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
7+
let mut i = 0;
8+
s.iter()
9+
.map(|c| {
10+
while set.contains(&c) {
11+
set.remove(&s[i]);
12+
i += 1;
13+
}
14+
set.insert(c);
15+
set.len()
16+
})
17+
.max()
18+
.unwrap_or(0) as i32
2219
}
2320
}

0 commit comments

Comments
 (0)