diff --git a/nonrepeating.go b/nonrepeating.go new file mode 100644 index 0000000000000000000000000000000000000000..f782d4d8a5dc5a4a831a7ef0ecd22d7bde960616 --- /dev/null +++ b/nonrepeating.go @@ -0,0 +1,31 @@ +package main + +import "fmt" + +func lengthOfNonRepeatingSubStr(s string) int { + lastOccurrend := make(map[rune]int) + start := 0 + maxLength := 0 + // for i ,ch := range[]byte(s){ byte 修改rune 支持中文件 + for i, ch := range []rune(s) { + if lastI, ok := lastOccurrend[ch]; ok && lastI >= start { + start = lastOccurrend[ch] + 1 + } + if i-start+1 > maxLength { + maxLength = i - start + 1 + } + lastOccurrend[ch] = i + + } + for v, _ := range lastOccurrend { + fmt.Printf("(%c )", v) + } + fmt.Println() + + return maxLength +} + +func main() { + fmt.Println(lengthOfNonRepeatingSubStr("dafwefwefwfsdfsdf")) + fmt.Println(lengthOfNonRepeatingSubStr("我家你中国,我在家乡")) +}