go语言实现查找最长子串
时间: 2023-02-11 09:19:32 浏览: 58
Go语言中可以使用strings包中的函数来实现查找最长子串。
例如,可以使用strings.Index()函数来查找给定子串在字符串中的位置,并使用循环不断调用该函数来查找所有子串。
下面是一个示例代码:
```
package main
import (
"fmt"
"strings"
)
func longestSubstring(s string) string {
maxLength := 0
maxSubstring := ""
for i := 0; i < len(s); i++ {
for j := i + 1; j <= len(s); j++ {
if strings.Index(s[j:], s[i:j]) == -1 {
if j-i > maxLength {
maxLength = j - i
maxSubstring = s[i:j]
}
}
}
}
return maxSubstring
}
func main() {
fmt.Println(longestSubstring("abcdabcdefgh"))
}
```
输出为"abcdefgh"
上面这个程序中,longestSubstring函数首先定义了两个变量maxLength和maxSubstring来记录最长子串的长度和内容,然后使用双重循环来遍历所有子串,并使用strings.Index()函数检查该子串是否为最长子串,如果是则更新maxLength和maxSubstring。
不过需要注意的是,这个程序的复杂度是 O(n^3)的,会很慢,考虑使用后缀树/后缀数组之类的算法来优化查找最长公共子串。