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

题目:


思路

1.将字符串中所包含的字符用字典来表示,刚开始时都赋值为0

2.接着去遍历字符串,找出无重复字符的最长子串输出对应长度
解题过程

1.首先将字符串转换为列表形式

2.判断

1>列表为空,返回0

2>列表由同个字符组成,返回1

3>无上述情况则列表去重 (判断字符串是否都不重复以及将字符串中包含的字符转换为字典来表示都需要用到去重操作,所以先不判断字符串中的字符都不重复),去重后:

  • 设置nums代表无重复最长子串的长度,初始为0
  • 从第一个字符开始,依次去遍历,则需要遍历 len(t)-1
  • 每次遍历的时候,需要将字典中的值全都重置,之后,每次从列表取一个值,这个值所对应的键的值+1,然后去判断对应键的键值是否等于2,等于2说明有重复值了,这趟遍历结束,遍历结束后去判断这趟遍历所得到的不重复子串是否是最长的,是则用nums来代替, 若对应键值对不等于2,则当前的不重复子符加上这个列表值

代码

python 复制代码
class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        t = list(s)
        count = len(t)
        if count == 0:
            return 0
        elif t.count(t[0]) == count:
            return 1
        else:
            strs = list(set(t))
            dict1 = {}
            if len(strs) == len(t):
                return len(t)
            nums = 0
            for i in range(len(t)-1):
                for nums1 in strs:
                    dict1[nums1] = 0
                s1 = ''
                for j in s[i:]:
                    dict1[j]+=1
                    if dict1[j]==2:
                        break
                    else:
                        s1+=j
                if len(s1)> nums:
                    nums = len(s1)
            return nums
相关推荐
UIU11415 分钟前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
“AI国潮设计-小江”18 分钟前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
论文复现现场44 分钟前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi1 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
benchmark_cc1 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读2 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
秋天的怀念_David2 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放2 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下2 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
碧海银沙音频科技研究院3 小时前
在PC电脑上用Whisper→Marian算法实现离线语音翻译功能
算法·whisper