日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang

發布時間:2025/3/12 php 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:給定一個字符串,請你找出其中不含有重復字符的?最長子串的長度。

示例?1:

輸入: "abcabcbb"

輸出: 3

解釋: 因為無重復字符的最長子串是 `"abc",所以其`長度為 3。

示例 2:

輸入: "bbbbb"

輸出: 1

解釋: 因為無重復字符的最長子串是 `"b"`,所以其長度為 1。

示例 3:

輸入: "pwwkew"

輸出: 3

解釋: 因為無重復字符的最長子串是?`"wke"`,所以其長度為 3。

請注意,你的答案必須是 **子串** 的長度,`"pwke"`?是一個_子序列,_不是子串。

基于Golang的代碼實現如下:

func lengthOfLongestSubstring(s string) int {

// 獲取字符串長度

l := len(s)

// 單個字符直接返回

if l <= 1 {

return l

}

// historyMax記錄歷史保存的最大長度

// currentMax記錄當次迭代下最大長度

historyMax, currentMax := 0, 0

// 定義最長無重復字符串的起點下標

start := 0

// 存儲字符的最新位置

tmp := map[string]int{}

for i := 1; i <= l; i++ {

// 判斷當前字符是否有記錄

if v, ok := tmp[s[i-1:i]]; ok {

// 如若有記錄,說明發現重復字符,記錄當下的最長值

if currentMax > historyMax {

historyMax = currentMax

}

// 當次迭代后的最大長度重新計算為去掉重復字符之前的長度

// 如abca,新的無重復字符串為bca

currentMax = currentMax - v + start + 1

// 刪掉重復字符之前所有字符的位置記錄

for j := start; j < v; j++ {

delete(tmp, s[j:j+1])

}

// 更新無重復字符串的起點下標

start = v

} else {

// 沒有找到重復字符則長度+1

currentMax++

}

// 永遠記錄當前字符的位置

tmp[s[i-1:i]] = i

}

// 返回最終的max長度

if currentMax > historyMax {

historyMax = currentMax

}

return historyMax

}

有疑問加站長微信聯系(非本文作者)

總結

以上是生活随笔為你收集整理的无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。