求字符串中的最长子串长度

使用go语言实现求字符串中的最长子串长度

package main

import (
	"fmt"
)

//求字符串中的最长子串长度
func maxlensub(str string) (maxLen int) {
	if len(str) == 0 {
		return
	}
	//记录元素的最后出现位置
	itemLastIndex := make(map[rune]int)
	start := 0
	maxLen = 0
	for index, item := range []rune(str) {
		if lastIndex, ok := itemLastIndex[item]; ok && lastIndex >= start {
			start = lastIndex + 1 //获取元素上一次出现的位置
		}
		//本次出现位置-上次出现位置
		if index-start+1 > maxLen {
			maxLen = index - start + 1
		}
		itemLastIndex[item] = index
	}
	fmt.Printf("%s %d", str, maxLen)
	fmt.Println()
	return maxLen
}

func main() {
	fmt.Println("求最长子串长度示例演示")
	maxlensub("abcdefg")
	maxlensub("ababab")
}