Given a string s, find the length of the longest substring without duplicate characters.
Example 1:
Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3. Note that "bca" and "cab" are also correct answers.
Example 2:
Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:
Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
Constraints:
0 <= s.length <= 5 * 10^4s consists of English letters, digits, symbols and spaces.func lengthOfLongestSubstring(s string) int { l := 0 r := 1 var canAdd = func(l, r int) bool { // fmt.Println("[ ] canAdd", l, r) sub := s[l:r] counts := map[rune]int{} for _, c := range sub { if counts[c] > 0 { // fmt.Println("[-] canAdd", sub) return false } counts[c]++ } // fmt.Println("[+] canAdd", sub) return true } result := 0 for l < len(s) { for r <= len(s) && canAdd(l, r) { result = max(result, r-l) r++ } l++ } return result }