1 Longest Substring no Repeat Characters-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Longest Substring no Repeat Characters

汽车电子技术 来源:神经网络与强化学习 作者:Jemma Liu 2023-03-01 13:37 次阅读

今天的题目是第3题,medium难度.

  1. Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3 
Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

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

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

示例 1:

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

示例 2:

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

示例 3:

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

My answer:

首先对于查询是否存在的操作我们选择用dict来做(hash速度快), 对整个字符串进行遍历 用dict字典中存储已经访问过的数据. 对于未存在于dict中的元素直接添加key:value为s[i]:i; 当遇到已经存在的元素更新start的位置为dict[s[i]]的下一位, 因为dict中的值仍然保留start之前的数元素, 所以遇到的存在元素未必是有效的, 需要对start的更新值进行判断start = max(start, dct[s[i]] + 1). 最后更字典和最大长度即可.

class Solution:


    def lengthOfLongestSubstring(self, s: str) -> int:
        start = 0
        max_len = 0
        dct = {}
        for i in range(len(s)):
            if s[i] in dct:
                start = max(start, dct[s[i]] + 1) 
            dct[s[i]] = i
            max_len = max(max_len, i - start+1)
        return max_len
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    578

    浏览量

    20505
  • 字典
    +关注

    关注

    0

    文章

    13

    浏览量

    7700
  • Start
    +关注

    关注

    0

    文章

    73

    浏览量

    10281
收藏 人收藏

    评论

    相关推荐

    重点介绍所有综合编译器都支持的for和repeat循环

    循环语句允许多次执行编程语句或begin-end语句组。SystemVerilog中的循环语句有:for、repeat、while、do..while、foreach和forever。
    的头像 发表于 11-03 09:10 2112次阅读
    重点介绍所有综合编译器都支持的for和<b class='flag-5'>repeat</b>循环

    Labview8.5版本 关于write characters to file VI的问题

    `是不是Labview8.5版本 没有write characters to file 这个函数啊,我在清华教程里面看到使用这个函数的例子,怎么在8.5版本上找不到这个函数呢?奇怪。`
    发表于 03-14 19:45

    Linux Shell系列教程之Shell字符串用法

    :position:length}在$string中, 从位置$position开始提取长度为$length的子串${string#substring}从变量$string的开头, 删除最短匹配
    发表于 08-29 16:01

    AD09多通道设计如何批量给Sheet Entry 加Repeat

    AD多通道设计时,需要将Sheet Symbol中的各Sheet Entry加Repeat,现在都是手动加的,请问有没有可以批量的方法?
    发表于 10-09 09:02

    将字符添加到Wildcard Characters时,在屏幕上看不到这些字母怎么处理?

    当我将字符添加到 Wildcard Characters 时,我在屏幕上看不到这些字母。我怎么办?
    发表于 12-15 06:31

    EFUSE_RD_REPEAT_ERR4_REG的正确地址是什么?

    好像是不同ESP-*芯片的EFUSE_RD_REPEAT_ERR4_REG地址有些不一致。例如,对于 ESP32-S3,TRM 将 EFUSE_RD_REPEAT_ERR4_REG 列为寄存器摘要表
    发表于 04-11 06:55

    PCF2113x LCD控制器驱动器数据手册

    display of 2 lines of 12 characters or 1 line of 24 characters with 5 ´ 8 dotformat. All necessary functions for the display are
    发表于 03-10 16:53 15次下载

    FPGA_165B_Repeat_DigitalIO

    FPGA_165B_Repeat_DigitalIO,好东西,喜欢的朋友可以下载来学习。
    发表于 02-22 16:03 0次下载

    FPGA_165A_Repeat_DigitalIO

    FPGA_165A_Repeat_DigitalIO,好东西,喜欢的朋友可以下载来学习。
    发表于 02-22 16:03 0次下载

    简谈FPGA verilog中的repeat用法与例子

           大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA verilog中的repeat用法与例子。       repeat 循环语句执行指定循环数,如果循环计数表达式的值不确定
    的头像 发表于 08-15 14:07 1.9w次阅读
    简谈FPGA verilog中的<b class='flag-5'>repeat</b>用法与例子

    用独特手势控制空间中的可播放角色

    This video shows gameplay from each of the five different playable characters in Space Between.
    的头像 发表于 10-29 06:59 2269次阅读

    TensorFlow中读数据三种方法

    repeat将整个序列重复多次,只用用来处理epoch。如果直接调用repeat()的话,生成的序列就会无限重复下去,没有结束,因此也不会抛出。tf.errors.OutOfRangeError异常:
    的头像 发表于 04-01 14:40 3009次阅读

    C语言算法分析:求最长的递增数列

    求最长的递增数列(Longest Increasing sequence, LIS)是一个比较常见的问题。
    的头像 发表于 06-22 14:57 3206次阅读
    C语言算法分析:求最长的递增数列

    Longest Palindromic Substring

    回文字符串, 是正读反读都一样的字符串。比较直接的方法是在每个字符位置上向前和向后搜索找到回文字符串。其中,对于搜索时需要对奇数位和偶数位两种形式进行探索,奇数位以当前位置的字符为中心;偶数位以当前位置和其相邻一个位置的两个字符为中心向两边拓展。
    的头像 发表于 03-01 11:28 389次阅读

    verilog中repeat必须用begin和end吗

    在Verilog中,repeat语句不需要使用begin和end块。repeat语句是一种循环控制语句,允许重复执行一个代码块指定的次数。它的一般语法如下: repeat (n) statement
    的头像 发表于 02-23 10:14 1183次阅读