# Python program for the Longest Substring Without Repeating Characters

I write my Python program below for this Leetcode problem:

Given a string s, find the length of the longest substring without repeating characters.

Example 1:

Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.


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.

class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
if s == "":
return 0
L = 1
tmp0 = [(i,i+1) for i in range(len(s)-1)]
# print(tmp0)
# print(10*'-.')
while L<=len(set(s)):
tmp = []
for x in tmp0:
i, j = x
if j < len(s) and s[j] not in s[i:j]:
tmp.append((i,j+1))
# print(tmp)
# print(s[i:j+1])
if not tmp:
break
else:
tmp0 = tmp
L += 1
return L


It passes all the tests but it runs slow. I am aware there are other faster solutions. But I would appreciate a code review for the one above. I would like to know if my idea is intrinsically slow or if it is still possible to make the code faster using the same idea. I am guessing s[j] not in s[i:j] is an expensive piece in the code.