Given a string, find the length of the longest substring without repeating characters.
Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3.
Input: "bbbbb" Output: 1 Explanation: The answer is "b", with the length of 1.
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.
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
}
}