Given a string, find the length of the longest substring without duplicate characters. Use a sliding window — expand right, shrink left on duplicates.