开始刷题第三道,程序员开发属于一个长期过程,是需要坚持去做的事情。后面每周都会尽量分享两道自己的做题思路,希望每个程序员都可以坚持下去。
解题思路,类似于滑动窗口的方式,每次都用下一个字符跟前面的字串进行比较,是否已经存在,如果存在就重新开始。这种算是比较常见的考虑方法。
毕竟是自己写的,分享出来,可以互相学习,如有问题,可以在评论区留言哦。
func lengthOfLongestSubstring(s string) int {
max := 1
result := 0
for begin := 0; begin < len(s); begin++ {
max = 1
for end := begin + 1; end < len(s); end++ {
stemp := s[begin : end]
if strings.Index(stemp, string(s[end])) != -1 {
break
}
max++
}
if result < max {
result = max
}
}
return result
}
用时比较长,打败11%的go用户,但是内存消耗的比较小,打败98% 还不错哦。
后面如果有时间,会再次尝试优化消耗时间。