python实现LeetCode-----3. 无重复字符的最长子串

3. 无重复字符的最长子串


题目链接:点我


思路

  1. 首先判断 s 是否为空还是为 1 ,如果是的话,直接返回
  2. 定义一个游标(curbegin)作为每次的起点
  3. 每次在 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
View Code

 

posted @ 2018-06-06 12:13  NaLaEurCAS  阅读(190)  评论(0编辑  收藏  举报