思路&代码
利用滑动窗口思想,每次共左边向右边查找,并且找到,则内循环跳出,比较当前子串的大小,重新进入下一轮查找,直到滑动窗口的右值结束.
func MaxSubstring(s string) int {
if len(s) == 0 {
return 0
}
if len(s) == 1 {
return 1
}
max := 0
var k int = 0
for i := 0;i < len(s);i++ {
for j := k;j < i;j++ {
if s[i] == s[j] { // 有重复,滑动窗口左值+1,跳出当前查找,进入下一轮查找
k = j + 1
break
}
}
if max < (i -k + 1) {
max = (i - k + 1)
}
}
return max
}