添加新题目

This commit is contained in:
2025-08-21 19:04:30 +08:00
parent 2eb2d2bedc
commit 1f832e271e
8 changed files with 514 additions and 23 deletions

View File

@@ -0,0 +1,95 @@
package main
import "fmt"
func main() {
fmt.Println(findAnagrams("cbaebabacd", "abc"))
}
func findAnagrams(s string, p string) []int {
length := len(p)
if length > len(s) {
return []int{}
}
nums := [26]int{}
nownum := [26]int{}
result := []int{}
for _, ch := range p {
nums[ch-'a']++
}
for i := 0; i < len(s)-length+1; i++ {
if i == 0 {
for i := 0; i < length; i++ {
nownum[s[i]-'a']++
}
if nums == nownum {
result = append(result, i)
}
continue
}
nownum[s[i-1]-'a']--
nownum[s[i+length-1]-'a']++
if nums == nownum {
result = append(result, i)
}
}
return result
}
//func findAnagrams(s string, p string) []int {
// result := make([]int, 0)
// if len(s) < len(p) {
// return result
// }
// windowlength := len(p)
// hashmap := make(map[string]int)
// keynum := 0
// for i := range p {
// if _, ok := hashmap[string(p[i])]; ok {
// hashmap[string(p[i])] += 1
// } else {
// keynum++
// hashmap[string(p[i])] = 1
// }
// }
// //fmt.Println(hashmap)
// for slow := 0; slow < len(s); slow++ {
// fasttmp := slow
// hashtemp := make(map[string]int)
// if len(s)-fasttmp < windowlength {
// break
// }
// for fast := slow; fast < windowlength+slow; fast++ {
// if _, ok := hashmap[string(s[fast])]; ok {
// hashtemp[string(s[fast])] += 1
// } else {
// break
// }
// if fast == windowlength+slow-1 {
// va := 0
// for k, v := range hashtemp {
// if hashmap[k] != v {
// //fmt.Println("退出")
// break
// } else {
// va++
// }
// }
// //fmt.Println("当前va:", va)
// if va == keynum {
// result = append(result, slow)
// }
// }
// }
// //fmt.Println("hashtemp", hashtemp)
// }
// fmt.Println(result)
// return result
//}

View File

@@ -0,0 +1,37 @@
package main
import "fmt"
func main() {
fmt.Println(lengthOfLongestSubstring(" "))
}
func lengthOfLongestSubstring(s string) int {
if len(s) == 0 {
fmt.Println("直接")
return 0
}
if len(s) == 1 {
return 1
}
left, right := 0, 1
window := 1
result := 0
hash := make(map[rune]struct{}, 0)
hash[rune(s[0])] = struct{}{}
for right < len(s) {
if _, ok := hash[rune(s[right])]; ok {
window--
delete(hash, rune(s[left]))
left++
} else {
hash[rune(s[right])] = struct{}{}
right++
window++
result = max(result, window)
}
}
return result
}