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


     

    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

     

  • 相关阅读:
    【ASP.NET Core】标记帮助器——替换元素名称
    java毕业设计——基于java+JSP+J2EE的城市公交查询系统设计与实现——城市公交查询系统
    MySQL的增删改查2
    C#WPF视频播放器实例
    netty系列之:EventExecutor,EventExecutorGroup和netty中的实现
    Leetcode 1011. Capacity To Ship Packages Within D Days (Binary Search经典)
    【C++】多态
    【3】IMU模块:PA-IMU-460 ROS驱动 + 与GNSS时间同步
    C++:STL::String模拟实现
    Avalonia的UI组件
  • 原文地址:https://blog.csdn.net/m0_51919640/article/details/127973236