源代码文件:0003_length_of_longest_sub_string.go
/*
题目:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
*/
package p0003
func LengthOfLongestSubstring(s string) int{
lastAppearMap:=make(map[byte]int)
start:=0
maxLength:=0
for i,ch :=range []byte(s){
if lastAppearIndex,ok:=lastAppearMap[ch];ok && lastAppearIndex >= start{
start=lastAppearMap[ch]+1
}
if i-start+1>maxLength{
maxLength=i-start+1
}
lastAppearMap[ch]=i
}
return maxLength
}
测试代码文件:0003_length_of_longest_sub_string_test.go
package p0003
import "testing"
func TestLengthOfLongestSubstring(t *testing.T) {
length:=LengthOfLongestSubstring("abcabcbb")
if length !=3{
t.Errorf("测试失败,期望值为3,实际返回值为:%d\n",length)
}else{
t.Log("返回值与期望值一致,测试成功")
}
}
func BenchmarkLengthOfLongestSubstring(b *testing.B) {
for i:=0;i<b.N;i++{
LengthOfLongestSubstring("abcabcbb")
}
}
Benchmark测试结果:






































苏公安网备 32011402010933号