3. 无重复字符的最长子串
题目链接:点我
思路
- 首先判断 s 是否为空还是为 1 ,如果是的话,直接返回
- 定义一个游标(curbegin)作为每次的起点
- 每次在 s[curbegin, i] 中找第s[i]个元素,如果找不到,i 就加 1 ,找到的话就更新currbegin开始下一次循环
class Solution: def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ val_max = 1 # 1 首先判断长度是为 0 还是 1, 如果是,这接跳出 if len(s) == 0: return 0 if len(s) == 1: return 1 i = 1 curbegin = 0 while (i < len(s)): cur = s.find(s[i], curbegin, i) if (cur != -1): val_max = max(val_max, i - curbegin) curbegin = curbegin + 1 i += 1 if s.find(s[len(s) - 1],curbegin,len(s) - 1) == -1: return max(val_max,len(s) - curbegin) return val_max