S2
S2 copied to clipboard
0030. Substring With Concatenation of All Words | LeetCode Cookbook
https://books.halfrost.com/leetcode/ChapterFour/0001~0099/0030.Substring-with-Concatenation-of-All-Words/
func findSubstring(s string, words []string) []int {
wordsLen,wordLen,sLen:=len(words),len(words[0]),len(s)
len,res,subWordsMap:= wordsLen*wordLen,[]int{},make(map[string]int)
for _,v := range words{
subWordsMap[v]++
}
for i:=0;i<sLen;i++{
subWordsMapTmp := make(map[string]int)
for j:=i;j<i+len && j+wordLen<=sLen;j+=wordLen{
if _,ok:=subWordsMap[s[j:j+wordLen]];!ok{
break
}else{
subWordsMapTmp[s[j:j+wordLen]]++
}
}
if isMapEq(subWordsMap,subWordsMapTmp){
res = append(res,i)
}
}
return res
}
func isMapEq(a,b map[string]int) bool {
for k:=range a{
if b[k]!=a[k]{
return false
}
}
return len(a)==len(b)
}
暴力坚持