diff --git a/lib/maxLengthSubString.ts b/lib/maxLengthSubString.ts new file mode 100644 index 0000000..beb6823 --- /dev/null +++ b/lib/maxLengthSubString.ts @@ -0,0 +1,32 @@ +export function maxLengthSubString(str: string): number { + const endIndex = str.length - 1; + let res = 1; + let L = 0; + let R = 1; + let subStr = str[L]; + + if (!str) return 0; + if (str.length < 2) return 1; + + while (L <= endIndex && R <= endIndex) { + if (!subStr.includes(str[R])) { + subStr = subStr + str[R]; + res = Math.max(subStr.length, res); + R++; + } else { + L++; + subStr = str[L]; + R = L + 1; + } + } + + return res; +} + +console.log(maxLengthSubString("a"), "expect: " + 1); +console.log(maxLengthSubString(""), "expect: " + 0); + +console.log(maxLengthSubString("abcabcbb"), "expect: " + 3); +console.log(maxLengthSubString("ab"), "expect: " + 2); +console.log(maxLengthSubString("aaaaaa"), "expect: " + 1); +console.log(maxLengthSubString("aabcDfffaaaa"), "expect: " + 5);