QA:无重复字符的最长子串
程序员文章站
2022-10-04 12:19:59
无重复字符的最长字串 leetcode地址:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例: 输入: ......
无重复字符的最长字串
leetcode地址:
题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例:
输入: "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 }
上一篇: Python学习日记(三十) Socket模块使用
下一篇: 数字类型与字符串