{ "@context": "https://schema.org", "@type": "Article", "headline": "判断字符串是否包含在Go切片中", "datePublished": "2024-03-16T09:30:31", "dateModified": "2024-03-16T09:30:31", "description": "在 Go 语言中,判断一个字符串是否包含在切片中,可以使用循环的方式进行比较。然而,如果数据量较大,循环比较的效率较低。本文介绍了使用更复杂的数据结构,如后缀数组,来优化字符串匹配的算法,从而在对数时间内完成子字符串查找。问题内容我有一个子字符串数组和一个字符串切片。我想检查字符串是否包含 mysliceofsubstrings 切片中的任何子字符串。mysliceofsubstrings := []string{hello, world}mysliceofstringstocheck := []", "publisher": { "@type": "Organization", "name": "Golang学习网", "url": "https://m.17golang.com" }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://m.17golang.com/article/109704.html" } }
登录
首页 >  Golang >  Go问答

判断字符串是否包含在Go切片中

来源:stackoverflow

时间:2024-03-16 09:30:31 293浏览 收藏

在 Go 语言中,判断一个字符串是否包含在切片中,可以使用循环的方式进行比较。然而,如果数据量较大,循环比较的效率较低。本文介绍了使用更复杂的数据结构,如后缀数组,来优化字符串匹配的算法,从而在对数时间内完成子字符串查找。

问题内容

我有一个子字符串数组和一个字符串切片。我想检查字符串是否包含 mysliceofsubstrings 切片中的任何子字符串。

mysliceofsubstrings := []string{"hello", "world"}
mysliceofstringstocheck := []string{"hello mars", "hey mars"}

是否有更好的方法来实现以下将循环放入循环的方法?

for _, string := range mySliceOfStringsToCheck {

     for _, substring := range mySliceOfSubstrings {
          result := strings.Contains(string, substring)

     }  

}

如果我想根据两个不同的子字符串片段检查字符串该怎么办?


解决方案


除非数据量非常大,并且您正在寻求对当前 O(N^2) 解决方案进行算法改进,否则您的代码就没有问题。

对于非常大的数据,您可以考虑使用一些更复杂的数据结构。例如,Go 有 https://golang.org/pkg/index/suffixarray 包,可以让你检查字符串片段,对其进行预处理,然后在对数时间内执行子字符串查找。

今天关于《判断字符串是否包含在Go切片中》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>