LeetCode Algorithm 0003 - Longest Substring Without Repeating Characters (Medium)
Problem Link: https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
Description
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.
Solution C++
#pragma once
#include "pch.h"
// Problem: https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
namespace P3LongestSubstringWithoutRepeatingCharacters
{
class Solution
{
public:
int lengthOfLongestSubstring(string s)
{
unordered_map<char, size_t> char2Index;
int maxLen = 0;
int next = 0;
for (size_t i = 0; i < s.size(); i++)
{
if (char2Index.find(s[i]) != char2Index.end())
{
if (next < char2Index[s[i]] + 1)
{
next = char2Index[s[i]] + 1;
}
}
char2Index[s[i]] = i;
if (maxLen < i - next + 1)
{
maxLen = i - next + 1;
}
}
return maxLen;
}
};
}