Rust 力扣 - 3. 无重复字符的最长子串
文章目录
- 题目描述
- 题解思路
- 题解代码
- 题目链接
题目描述
题解思路
我们需要记录当前子串的开始下标,一个哈希表记录字符和遍历过程中最后一次出现的索引
遍历字符串,如果在当前字符在哈希表中有记录,并且索引下标大于当前子串的开始下标,表示出现重复字符,则将开始下标右移为当前字符索引下标
将当前字符及索引刷新到哈希表中,刷新无重复子串最大长度
题解代码
use std::collections::HashMap;impl Solution {pub fn length_of_longest_substring(s: String) -> i32 {let mut win: HashMap<char, usize> = HashMap::new();let mut ans = 0;let mut start = -1;for (i, c) in s.chars().enumerate() {if let Some(idx) = win.get(&c) {if *idx as i32 > start {start = *idx as i32;}}win.insert(c, i);ans = ans.max(i as i32 - start);}ans}
}
题目链接
https://leetcode.cn/problems/longest-substring-without-repeating-characters/