您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

最长不含重复字符的子字符串

IT之一小佬 发布时间:2021-08-30 22:03:48 ,浏览量:0

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
      请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

示例代码1:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if not s:
            return 0
        n = len(s)
        ret = []
        for i in range(n):
            tmp = []
            tmp.append(s[i])
            j = i + 1
            while j < n:
                if s[j] not in tmp:
                    tmp.append(s[j])
                    j += 1
                    continue
                break
            ret.append(len(tmp))
        return max(ret)

 示例代码2:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        res = tmp = 0
        dic = {}
        for j in range(len(s)):
            i = dic.get(s[j], -1)  # 获取索引i
            dic[s[j]] = j  #  更新哈希表
            tmp = tmp + 1 if j - i > tmp else j - i  # dp[j-1] -> dp[j]
            res = max(res, tmp)  # max(dp[j - 1], dp[j])
        return res 

 示例代码3:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        res = tmp = 0
        for j in range(len(s)):
            i = j - 1
            while i >= 0 and s[i] != s[j]:
                i -= 1  # 线性查找 i
            tmp = tmp + 1 if j - i > tmp else j - i   # dp[j - 1] -> dp[j]
            res = max(tmp, res) # max(dp[j - 1], dp[j])
        return res
            

  示例代码4:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        dic = {}
        res = 0
        i = -1
        for j in range(len(s)):
            if s[j] in dic:
                i = max(dic[s[j]], i)  # 更新左指针 i
            dic[s[j]] = j  # 哈希表记录
            res = max(res, j -i)  # 更新结果
        return res
            

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0404s