<p>Given a string <code>s</code>, find the length of the <strong>longest</strong> <span data-keyword="substring-nonempty"><strong>substring</strong></span> without repeating characters.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;abcabcbb&quot;
<strong>Output:</strong> 3
<strong>Explanation:</strong> The answer is &quot;abc&quot;, with the length of 3.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;bbbbb&quot;
<strong>Output:</strong> 1
<strong>Explanation:</strong> The answer is &quot;b&quot;, with the length of 1.
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;pwwkew&quot;
<strong>Output:</strong> 3
<strong>Explanation:</strong> The answer is &quot;wke&quot;, with the length of 3.
Notice that the answer must be a substring, &quot;pwke&quot; is a subsequence and not a substring.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>0 &lt;= s.length &lt;= 5 * 10<sup>4</sup></code></li>
	<li><code>s</code> consists of English letters, digits, symbols and spaces.</li>
</ul>

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int n = s.length();
        int res = min(n, 1);
        int start = 0;
        if(res == 0) return 0;
        while(start < n){
            int end = start + 1;
            unordered_set<char> m;
            // unordered_map<char, int> m;
            m.insert(s[start]);
            int count = 1;
            while(end < n){
                if(m.count(s[end]) != 0){
                    while(start < end){
                        if(s[start] == s[end]){
                            m.erase(s[start]);
                            break;
                        }
                        else{
                            m.erase(s[start]);
                            start++;
                        }
                    }
                    break;
                }
                else{
                    m.insert(s[end]);
                    count++;
                    end++;
                }
            }
            res = max(res, count);
            start = start+1;
        }
        return res;
    }
};
234005