From a5e3b1140ec34399e172e0405eb99f323e275a24 Mon Sep 17 00:00:00 2001 From: m4siri Date: Sun, 30 Nov 2025 20:47:11 +0545 Subject: lc starting today - 2025-11-30 --- .../src/main.rs | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 03_longest-substring-without-repeating-chars/src/main.rs (limited to '03_longest-substring-without-repeating-chars/src') diff --git a/03_longest-substring-without-repeating-chars/src/main.rs b/03_longest-substring-without-repeating-chars/src/main.rs new file mode 100644 index 0000000..f07bedf --- /dev/null +++ b/03_longest-substring-without-repeating-chars/src/main.rs @@ -0,0 +1,46 @@ +use std::collections::HashSet; + +fn main() { + let s = "dvdf".to_string(); + dbg!(Solution::length_of_longest_substring(s)); +} + +struct Solution(()); + +impl Solution { + pub fn length_of_longest_substring(s: String) -> i32 { + use std::collections::HashMap; + + let s = s.chars().collect::>(); + let mut max_length = 0; + let mut length = 0; + let mut map: HashMap = HashMap::new(); + let mut idx = 0; + + while idx < s.len() { + let ch = &s[idx]; + + if let Some(ref ci) = map.remove(ch) { + map = HashMap::new(); + if max_length < length { + max_length = length; + } + + idx = (ci + 1) as usize; + length = 0; + continue; + } + + map.insert(ch.clone(), idx as i32); + + length += 1; + idx += 1; + } + + if length > max_length { + max_length = length; + } + + max_length + } +} -- cgit v1.2.3