原题链接:https://leetcode.cn/problems/length-of-the-longest-valid-substring/
滑动窗口做法,但是需要注意一点是forbidden里的元素长度不会超过10,就可以局部暴力做了。
func longestValidSubstring(word string, forbidden []string) int {
mp := make(map[string]int)
for _, str := range forbidden {
mp[str]++
}
res := 0
left := 0
for right := range word {
l := max(left, right - 9)
for i := right; i >= l; i -- {
str := word[i:right+1]
if _, ok := mp[str]; ok {
left = i+1
break
}
}
res = max(res, right - left + 1)
}
return res
}
func max(a, b int) int {
if a > b {
return a
}
return b
}