描述

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

数据范围:s.length≤40000

示例
// 输入:
"abcabcbb"
// 返回值:
3
// 说明:因为无重复字符的最长子串是"abc",所以其长度为 3。

// 输入:
"bbbbb"
// 返回值:
1
说明:因为无重复字符的最长子串是"b",所以其长度为 1。

// 输入:
"pwwkew"
// 返回值:
3
// 说明:因为无重复字符的最长子串是 "wke",所以其长度为 3。
// 请注意,你的答案必须是子串的长度,"pwke" 是一个子序列,不是子串。
解题思路

滑动窗口

通过 left、right 指针控制左右窗口,长度等于 right - left + 1,右指针依次向右移动

通过 hash(或数组)记录每个字符出现的次数,如果大于 1,则左窗口依次向右移动,直到该字符等于 1 为止

代码实现
/**
 * 滑动窗口
 *
 * @param s string 字符串
 * @return int 整型
 */
func lengthOfLongestSubstring(s string) int {
    n := len(s)
    if n == 1 {
        return 1
    }

    hash := make([]int, 256)
    left, right, max := 0, 0, 1
    for right < n {
        hash[s[right]] += 1
        for hash[s[right]] != 1 {
            hash[s[left]]--
            left++
        }
        max = int(math.Max(float64(max), float64(right-left+1)))
        right++
    }

    return max
}

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

11 条评论

  1. 鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099
    鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099

    微信电话同步?【——183-88909465—微电同号】?华纳公司客服联系方式?【6011643——183-88909465——-】、?华纳公司直属开户
    华纳公司注册会员流程?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    如何成为华纳公司会员?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳直属会员开户步骤?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳公司会员注册指南?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳总公司会员申请?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳公司会员注册所需材料?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳会员开户流程?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳公司注册会员步骤?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳会员申请流程?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
    华纳公司会员注册指南?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】

  2. abdrsolzhs
    abdrsolzhs

    奖励旅程

  3. hmpytovwez
    hmpytovwez

    相声大电影之我要幸福

  4. uajdssstup
    uajdssstup

    午夜迷案

  5. xbvantcomr
    xbvantcomr

    打倒他们

  6. dpsmocrtok
    dpsmocrtok

    私家侦探

  7. edsidlguvx
    edsidlguvx

    鬼屋直播

  8. wiaurwwfcf
    wiaurwwfcf

    再见福宝

  9. ilwosztxig
    ilwosztxig

    反贪风暴5最终章

  10. buhywsjdfa
    buhywsjdfa

    最强壮的人

  11. wmmnfgkhni
    wmmnfgkhni

    误杀2

添加新评论