首页 > 其他 > 详细

go实现 无重复字符的最长子串

时间:2020-09-26 18:18:58      阅读:33      评论:0      收藏:0      [点我收藏+]
package main

import (
"fmt"
"strings"
)
/**
*窗口可以在两个边界移动一开始窗口大小为0
*随着数组下标的前进窗口的右侧依次增大
*每次查询窗口里的字符,若窗口中有查询的字符
*窗口的左侧移动到该字符加一的位置
*每次记录窗口的最大程度
*重复操作直到数组遍历完成
*返回最大窗口长度即可
*/
func lenString(s string) int {
//var Length []int
var Length int
var s1 string
left := 0
right := 0
s1 = s[left:right]
for ;right<len(s);right++ {
/**
*IndexByte函数的功能是检查字节c在s中第一次出现的位置索引;
*如果s中第一次出现则返回-1,第二次出现则返回第二次出现的位置索
*/
index := strings.IndexByte(s1,s[right])
//当某个字符出现第二次的时候返回当前索引加1的位置
if index != -1{
left = index+1
fmt.Println(s1)
}
//字符串长度截取 left起始位置 right截止位置
s1 = s[left:right+1]
//获取到的长度如果大于先前的长度,就替换直到获取到最长字符串
if len(s1) > Length{
Length = len(s1)
}
}
return Length
}

func main() {
s := lenString("abadesse")
fmt.Print("\n",s,"\n")
}

go实现 无重复字符的最长子串

原文:https://www.cnblogs.com/lkl6/p/13734329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!