2 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個贊
考慮使用地圖進(jìn)行查找
lookupSpam := make(map[string]bool)
for _, v := range spamWords {
lookupSpam[v] = true
}
然后代替
for _, word := range textArr {
for _, sapmWord := range spamWords {
if word == sapmWord {
return true
}
}
}
可以使用這樣的東西
for _, word := range textArr {
_,found:=lookupSpam[word]
if found {
return true
}
}
如果您重復(fù)檢查同一組單詞,則設(shè)置一次地圖并重復(fù)使用它

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個贊
您正在嘗試比較一個字母和一個字符串。
當(dāng)你在做for _, word := range text的時候,它不是詞,它是letter。如果你想要單詞,你必須將字符串分割成一片單詞textArr := strings.Split(text, " ")(由空格分割)
func TextHasSpamWords(text string, spamWords []string) bool {
removePunctuation := func(r rune) rune {
if strings.ContainsRune(".,:;", r) {
return -1
} else {
return r
}
}
text = strings.Map(removePunctuation, text)
textArr := strings.Split(text, ` `)
sort.Strings(spamWords)
for _, word := range textArr {
for _, sapmWord := range spamWords {
if word == sapmWord {
return true
}
}
}
return false
}
- 2 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報(bào)