力扣题库

"""给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
"""
def choose(msg):
    lst=[]
    for i in range(len(msg)):
        for j in range(i+1,len(msg)+1):
            m=msg[i:j]
            if len(set(m)) == len(m):
                lst.append(m)
    lst=list(sorted(lst,key=lambda x:len(x)))
    if  len(lst)==0:
        return 0
    return  len(lst[-1])
print(choose(""))
#经测试可以实现功能
#但是超过时间限制

 

  大神方法
def Substring(s):       st = {}
    i, ans = 0, 0
    for j in range(len(s)):
        if s[j] in st:
             i = max(st[s[j]], i)
         ans = max(ans, j - i + 1)
         t[s[j]] = j + 1
         return ans

测试 s="abbccd

j=0时

j=1时

j=2时

此时循环到s[2]即第二个b

b前面有两个字符,因此 i 被赋值为2

j=3时

j=4时

此时循环到s[4]即第二个c

c前面有四个字符,因此 i 被赋值为4

j=5时

i的作用就是当出现重复字符的时候,把当前字符前面的字符个数赋值给i

ans = max(ans, j - i + 1)

使ans能够在出现重复字符的时候锁定住,直到出现更长的无重复的字符串

原文地址:https://www.cnblogs.com/ellisonzhang/p/10393204.html

时间: 2024-11-09 05:07:16

力扣题库的相关文章

数据库力扣题删除重复的电子邮箱

解析:由题可知为删除数据语句.由条件重复的邮箱可得出查找条件之一是Email属性的相等.由条件重复的邮箱里只保存最小的那个可得出查找条件之二是Id属性的比较. 答案:delete p1 from Person p1,Person p2 where p1.Id>p2.Id and p1.Email=p2.Email 原文地址:https://www.cnblogs.com/laixiaobin/p/11656324.html

数据库力扣题组合两个表

解析:首先是一个SQL查询语句,由条件组合两个表得出应该是连接查询,由条件无论Person表是否有地址信息,都要基于上述两表提供Person表的信息得出应该是用FROM字句中的左外连接,这样在结果集中保留了连接表达式左表中的非匹配记录. 知识点:详见教材P151.SQL查询语句分为简单,连接,嵌套,组合查询4种类型.连接查询中的连接条件可通过WHERE子句和FROM子句表示.WHERE子句表示的连接操作可分等值连接,非等值连接,自然连接.FROM子句表示的连接操作可分为内连接,左外连接,右外连接

数据库力扣题上升的温度

解析:单表显然是简单查询,由查找与昨天的温度相比温度更高的日期可得出查询条件之一是温度属性的比较.查询条件之二是昨天应该用dateDiff()函数 知识点: datepart可省略 答案: select p1.Id from Weather p1,Weather p2 where p1.Temperature>p2.Temperature and dateDiff(p1.RecordDate,p2.RecordDate)=1 原文地址:https://www.cnblogs.com/laixia

LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现

题目描述: python实现 Search in Rotated Sorted Array 搜索旋转排序数组   中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 . 你可以假设数组中不存在重复的元素. 你的算法时间复杂度必须是 O(log n) 级别. 英文:Suppose an array sorted i

力扣——3sum closest(最接近的三数之和)python 实现

题目描述: 中文: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 英文: Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of

力扣 ——4Sum (四数之和)python 实现

题目描述: 中文: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组. 英文: Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d

【算法练习题】力扣练习题——数组(2):三数之和

原题说明: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]] 原题链接:https://leetcode-cn.com/problems/3sum 解法一:基于HashMap的暴力求解 参考力扣题

力扣50题 Pow(x,n)

本题是力扣网第50题. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 采用递归和非递归思路python实现. class Solution: #递归思路 def myPow_recursion(self,x,n): if n == 0: #递归终止条件,n==0返回1 return 1 if n < 0: #n小于0,就返回其倒数,-n和其递归结构一致 return 1 / self.myPow_recursion(x,-n) if n & 1: #判断是奇数,则结果为x*(x

力扣第70题:爬楼梯

力扣第70题:爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶. 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶. 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 ? int climbStairs(int n) { if (n <= 1) { re