1. Sliding window
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ if len(s) <= 1: return len(s) l = r = 0 max_length = 1 mp = [] for i in range(len(s)): r = i if s[i] in mp: for j in range(l, r): if s[j] == s[i]: l = j + 1 break else: mp.append(s[i]) max_length = max(r - l + 1, max_length) return max_length
func lengthOfLongestSubstring(s string) int { if len(s) <= 1 { return len(s) } var l int = 0 var r int = 0 var size int = len(s) var longest int = 1 var appeared []byte for i := 0; i < size; i++ { r = i if isValueInList(appeared, s[i]) { for j := l; j < r; j++ { if s[j] == s[i]{ l = j + 1 break } } } else { appeared = append(appeared, s[i]) } if (r - l + 1 > longest){ longest = r - l + 1 } } return longest}func isValueInList(list []byte, val byte) bool { for _, v := range list { if v == val{ return true } } return false}