删除字符串中包含给定切片中任何单词的所有子串
短信预约 -IT技能 免费直播动态提醒
本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《删除字符串中包含给定切片中任何单词的所有子串》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~
问题内容我正在尝试进行主题提取,我所做的是从字符串中删除所有辅助词,我的伪代码是:
topic := make(map[string]int)
auxiliaryWord := []string{"hbs", "habis", "dan", "kapan", "bagaimana", "kita", "kamu", "warga", "pada", "paling", "ga", "gak", "enggak", "tidak", "bukan", "usai", "juga", "yg", "yang", "kpd", "kepada", "nya", "adanya", "jd", "jadi", "sih", "lah", "kan", "photo", "from", "by", "ini", "saja", "utk", "untuk", "lebih", "ternyata", "apa", "sok", "tau", "bagi", "eksis", "keluar", "kk", "kakak"}
for chat := range chats {
arrWord := chat.Split(chat, " ")
for word := arrWord {
if word not in auxiliaryWord {
if topic[word] not exist {
topic[word] = 1
} else {
topic[word]+= 1
}
}
}
}
我的问题是,有没有更快的方法来做到这一点?
解决方案
只需预先计算 auxilaryword 进行哈希,然后进行查找。
package main
import (
"fmt"
"strings"
)
var auxilaryWords = []string{"hbs", "habis", "dan", "kapan", "bagaimana", "kita", "kamu", "warga", "pada", "paling", "ga", "gak", "enggak", "tidak", "bukan", "usai", "juga", "yg", "yang", "kpd", "kepada", "nya", "adanya", "jd", "jadi", "sih", "lah", "kan", "photo", "from", "by", "ini", "saja", "utk", "untuk", "lebih", "ternyata", "apa", "sok", "tau", "bagi", "eksis", "keluar", "kk", "kakak"}
var auxHash = map[string]bool{}
func CountTopics(chatWords []string) map[string]int {
result := map[string]int{}
for _, word := range chatWords {
if !auxHash[word] {
result[word] += 1
}
}
return result
}
func init() {
for _, word := range auxilaryWords {
auxHash[word] = true
}
}
func main() {
arrWord := strings.Split(`hai kakak habis makan apa`, " ")
fmt.Println(CountTopics(arrWord))
}
https://play.golang.org/p/Wr2gK_zizL0
今天关于《删除字符串中包含给定切片中任何单词的所有子串》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341