• 【力扣练习】找一个字符串中不含有重复字符的最长字串的长度


     

    class Solution:
        def lengthOfLongestSubstring(self, s: str) -> int:
            # 哈希集合,记录每个字符是否出现过
            occ = set()
            n = len(s)
            # 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
            rk, ans = -1, 0
            for i in range(n):
                if i != 0:
                    # 左指针向右移动一格,移除一个字符
                    occ.remove(s[i - 1])
                while rk + 1 < n and s[rk + 1] not in occ:
                    # 不断地移动右指针
                    occ.add(s[rk + 1])
                    rk += 1
                # 第 i 到 rk 个字符是一个极长的无重复字符子串
                ans = max(ans, rk - i + 1)
            return ans

     

    class Solution:
        def lengthOfLongestSubstring(self, s: str) -> int:
            if not s:return 0
            left = 0
            lookup = set()
            n = len(s)
            max_len = 0
            cur_len = 0
            for i in range(n):
                cur_len += 1
                while s[i] in lookup:
                    lookup.remove(s[left])
                    left += 1
                    cur_len -= 1
                if cur_len > max_len:max_len = cur_len
                lookup.add(s[i])
            return max_len

    python1中

    class Solution:

        def lengthOfLongestSubstring(self, s: str) -> int:

          occ = set()

          n =len(s)

          rk,ans =-1,0

          for i in range(n):

                if i != 0:

                    occ.remove(s[i-1])

                while rk + 1 < n and s[rk + 1] not in occ :

                    occ.add(s[rk + 1])

                    rk +=1

                ans = max(ans,rk - i + 1)

                return ans

    python2中的

    class Solution:

        def lengthOfLongestSubstring(self, s: str) -> int:

            if not s : return 0

            left = 0

            lookup = set()

            n = len(s)

            max = 0

            cur = 0

            for i in range(n):

                cur += 1

                while s[i] in lookup:

                    lookup.remove(s[left])

                    left += 1

                    cur -= 1

                if cur > max :

                    max = cur

                lookup.add(s[i])

            return max

     

  • 相关阅读:
    dify接入文心一言出错
    2022/9/20——IIC协议的练习(以温湿度传感器为例)
    R语言:岭回归分析选择变量
    【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础
    OKHTTP拦截器:IPv4地址优先连接
    RocketMq4 消息发送示例及源码浅阅
    opencv的MinGW-W64编译
    Spring框架
    项目管理之如何出道(下)
    Linux每日智囊
  • 原文地址:https://blog.csdn.net/m0_51919640/article/details/127973236