無重復字符的最長字串
leetcode地址:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
題目描述:
給定一個字串,請你找出其中不含有重復字符的 最長子串 的長度,
示例:
輸入: "abcabcbb" 輸出: 3
解決思路:
使用map lastOccured[byte]int 記錄字符和字符最后出現的下標
對于字串每個字符x:
1.lastOccured[x]不存在 或者 小于start時不做操作,
2.lastOccured[x]>=start 時,start = lastOccured[x]+1,
3.每次都要更新lastOccured[x],更新最大長度maxLength,

代碼如下:
func lengthOfLongestSubstring(s string) int { lastOccured := make(map[byte]int) start := 0 maxLength := 0 for i, ch := range []byte(s){ if num, ok := lastOccured[ch]; ok&& num >= start{ start = num + 1 } if i-start+1 > maxLength{ maxLength = i-start+1 } lastOccured[ch] = i } return maxLength }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/65042.html
標籤:Go
上一篇:Go學習筆記之Map
下一篇:C語言頭檔案找不到變數型別
