/**
 * @param {string} s
 * @return {number}
 */
function lengthOfLongestSubstring (s) {

    // Base cases
    if (s.length <= 1)
        return s.length
    
    var loop;
    var subStr;
    var iterator;
    var length = 0;

    // Iterate over the string
    for (var i = 0; i < s.length; i++) {
        iterator = i;
        loop = true;
        subStr = '';

        // Given the current character, iterate over the remaining string to the right of that character
        while (loop) {
            subStr += s[iterator];
            iterator++;

            if (subStr.includes(s[iterator]) || iterator >= s.length) {
                loop = false;
                if (subStr.length > length) {
                    length = subStr.length;
                }
            }
        }

    }
    return length;
}

lengthOfLongestSubstring("abcabcbb"); // 3
lengthOfLongestSubstring("bbbbb"); // 1
lengthOfLongestSubstring("pwwkew"); // 3