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
相关推荐
꧁细听勿语情꧂5 分钟前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
weixin_381288185 分钟前
PyTorch中高效实现SOM邻域权重更新:向量化替代双重循环
jvm·数据库·python
Yuanxl90310 分钟前
pytorch-优化器
人工智能·pytorch·python
m0_6178814212 分钟前
在 Go 中声明包级全局 Map 的正确方法
jvm·数据库·python
Polar__Star12 分钟前
Redis怎样管理废弃的数据集合_利用EXPIRE指令为任意数据类型设置生命周期
jvm·数据库·python
weixin_5689960612 分钟前
CSS布局如何解决父级因全是绝对定位导致本身没高度的问题
jvm·数据库·python
weixin_3812881813 分钟前
MySQL无法通过网络连接服务器_检查bind-address与访问权限
jvm·数据库·python
Felven16 分钟前
B. The 67th 6-7 Integer Problem
数据结构·算法
玉树临风ives17 分钟前
atcoder ABC 454 题解
算法·深度优先·图论
Irene199123 分钟前
Python 中的 round() 函数不是严格的“四舍五入“,而是采用银行家舍入法(Bankers‘ Rounding)
python