第一道自己完整写完的leetcode题目

给定一个字符串s,求解其中不包含重复字符的最长子串的长度。例如,在字符串sabcabcbb中,最长子串abc的长度为3。代码实现包括VScode调试和LeetCode提交的Python解决方案,主要使用滑动窗口思路来解决这个问题。
摘要由CSDN通过智能技术生成

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

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

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

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

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成

1.VScode调试代码

s1=list (s)
s0=[]
length=[]
k=0
for i in range (len (s)):
     if s1[i]!= s1[i-1]:
         if not s1[i] in s0:
             s0.append(s1[i])
             print(s0)
         else:
             length.append(int(len(s0)))
             print(length)################
             a=s0.index(s1[i])+1
             del s0[0:a]
             print(a)############
             s0.append(s1[i])
             print(s0)###############
     else:
         length.append(int(len(s0)))
         print(length)###########
         s0.clear()
         print(s0)##############
         s0.append(s1[i])
         print(s0)###############
if length==[]:
    print(len(s0))
else:
    print(max(max(length),len(s0)))

2.leetcode代码

class Solution:
    def lengthOfLongestSubstring(self, s: str,) -> int:
        if s=="":
            return(0)
        elif s==" ":
            return(1)
        elif len(s)==1:
            return(1)
        else:
            s1=list (s)
            s0=[]
            length=[]
            k=1
            for i in range (len (s)):
                 if s1[i]!= s1[i-1]:
                     if not s1[i] in s0:
                         s0.append(s1[i])
                     else:
                         length.append(int(len(s0)))
                         a=s0.index(s1[i])+1
                         del s0[0:a]
                         s0.append(s1[i])
                 else:
                     length.append(int(len(s0)))
                     s0.clear()
                     s0.append(s1[i])
            if length==[]:
                return(len(s0))
            else:
                return(max(max(length),len(s0)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值