美文网首页
无重复字符的最长子串 - Rust

无重复字符的最长子串 - Rust

作者: 曾大稳丶 | 来源:发表于2022-07-20 11:57 被阅读0次
    image.png

    题目解析
    采用滑动窗口。

    pub fn length_of_longest_substring(s: String) -> i32 {
        use std::collections::HashMap;
        
        if s.len() == 0{
            return 0 ;
        }
        let mut map = HashMap::with_capacity(s.len());
        let s = s.chars().collect::<Vec<_>>();
        let mut max = 0;
        let mut left = 0;
    
        s.iter().enumerate().for_each(|(index,char)|{
            if let Some(last) = map.get(char) {
                left = std::cmp::max(left, *last);
            }
            max = std::cmp::max(max, index - left + 1);
            map.insert(*char, index + 1);
        });
     
        max as i32
    }
    
    
    #[cfg(test)]
    mod tests {
        #[test]
        fn length_of_longest_substring_test() {
            use super::length_of_longest_substring;
    
            let s = String::from("afebcfefx");
            assert_eq!(5, length_of_longest_substring(s));
        }
    }
    

    复杂度分析
    空间复杂度: O(n)。
    时间复杂度: O(n)。

    相关文章

      网友评论

          本文标题:无重复字符的最长子串 - Rust

          本文链接:https://www.haomeiwen.com/subject/rbveirtx.html