题目:
给定字符串str,要求返回最长的不重复子串长度
分析:
动态规划思想
代码:
package main
import(
"fmt"
"strings"
)
//ababccabc求最长不重复子串
func maxsubstr(str string){
fmt.Println(str)
tmp:=""
right:=0
maxsub:=0
for k,_:=range(str){
tmp=string(str[k])
right=k+1
//从index=0开始遍历每个节点往后有多少不重复的子串
for right<len(str) && !strings.ContainsAny(tmp,string(str[right])) {
tmp = tmp+string(str[right])
right+=1
}
//出现重复记住不重复子串长度lensub,lensub=最后一个往右不重复的字符减去index,
lensub:=right-k
//比较当前子串长度与记录的最长子串长度哪个大
if maxsub<lensub{
maxsub=lensub
}
}
fmt.Println(maxsub)
}
func main(){
str:="aababccabcdeqwt"
maxsubstr(str)
}
总结:
for判断条件也是按照代码的顺序判断的,要先判断right有没有越界,再判断子串是否重复