給定一個(gè)字符串,請(qǐng)你找出其中不含有重復(fù)字符的 最長(zhǎng)子串 的長(zhǎng)度笋粟。
輸入: "abcabcbb"
輸出: 3
解釋: 因?yàn)闊o(wú)重復(fù)字符的最長(zhǎng)子串是 "abc"剧浸,所以其長(zhǎng)度為 3锹引。
輸入: "bbbbb"
輸出: 1
解釋: 因?yàn)闊o(wú)重復(fù)字符的最長(zhǎng)子串是 "b",所以其長(zhǎng)度為 1唆香。
輸入: "pwwkew"
輸出: 3
解釋: 因?yàn)闊o(wú)重復(fù)字符的最長(zhǎng)子串是 "wke"嫌变,所以其長(zhǎng)度為 3。
請(qǐng)注意躬它,你的答案必須是 子串 的長(zhǎng)度腾啥,"pwke" 是一個(gè)子序列,不是子串冯吓。
執(zhí)行用時(shí):1008 ms
class Solution:
def lengthOfSubString(self, s: str) -> int:
for i in range(len(s),0,-1):
for j in range(0, len(s)-i+1):
change = s[j:i+j]
for k in range(0,len(change)):
if change.count(change[k]) > 1:
break
elif k == len(change)-1:
return len(change)
return len(s)
def lengthOfLongestSubstring(self, s: str) -> int:
maxChar = ' '
maxCharNum = 0
if len(s) > 20:
charSet = set()
for char in s :
charSet.add(char)
for char in charSet:
num = s.count(char)
maxChar = char if num>maxCharNum else maxChar
maxCharNum = num if num>maxCharNum else maxCharNum
newStr = s.replace(maxChar, '@--@'+maxChar)
Arr = newStr.split('@--@')
StrSet = set()
for str in Arr:
StrSet.add(str)
if len(Arr) != len(StrSet):
newStr = ""
for str in Arr:
if str in StrSet:
newStr = newStr + str
if(len(str) > 1):
StrSet.remove(str)
return self.lengthOfSubString(newStr)
return self.lengthOfSubString(s)