Skip to content

Latest commit

 

History

History
50 lines (42 loc) · 1.27 KB

File metadata and controls

50 lines (42 loc) · 1.27 KB

3. Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
             Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

Solutions (Rust)

1. Sliding Window

use std::collections::HashMap;

impl Solution {
    pub fn length_of_longest_substring(s: String) -> i32 {
        let s = s.chars().collect::<Vec<char>>();
        let mut indices = HashMap::new();
        let mut ret = 0;
        let mut i = 0;

        for j in 0..s.len() {
            match indices.insert(s[j], j) {
                Some(x) => i = i.max(x + 1),
                None => (),
            }
            ret = ret.max(j - i + 1);
        }

        ret as i32
    }
}