示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
Go语言实现如下(源代码):
package main
import "fmt"
import "strings"
var m=make(map[string]int)
var sl []int
func lengthOfLongestSubstring(s string) int{
//字符串先转化成数组
s1:=strings.Split(s,"")
num:=0
//先找出重复的第一个索引
for i:=0;i
for j:=i+1;j
if s1[i]==s1[j]{
sl=append(sl,i)
}
}
}
//拿到第一个重复索引index,再从index开始遍历数组
for index:=sl[0];index
if _,ok:=m[s1[index]];!ok{
m[s1[index]]++
}
}
for _,val:=range m{
num+=val
}
return num
}
func main(){
s:="pwwkew"
nums:=lengthOfLongestSubstring(s)
//输出:3
fmt.Println(nums)
}
领取专属 10元无门槛券
私享最新 技术干货