我试图实现knuth morris pratt算法。文本中出现的图案外观不会得到打印。count变量保存模式在字符串中出现了多少次的值。请帮助解决问题package main import "fmt" func kmppre(pattern string, shiftarr []int) { m := len(pattern) i := 0 j := -1 for i < m { for j >= 0 && pattern[i] != pattern[j] { j = shiftarr[j] } i++ j++ shiftarr[i] = j } } func kmp(text string, pattern string) int { n := len(text) m := len(pattern) count := 0 i, j := 0, 0 shiftarr := make([]int, m+1) kmppre(pattern, shiftarr) for i < n { for j >= 0 && text[i] != pattern[j] { j = shiftarr[j] } i++ j++ if j == m { count++ j = shiftarr[j] } } return count } func main() { fmt.Print("enter the text \n") var text string fmt.Scan(&text) fmt.Print("enter the pattern string\n") var pattern string fmt.Scan(&pattern) a := kmp(text, pattern) fmt.Println(a) }
1 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
凤凰求蛊
TA贡献1825条经验 获得超4个赞
对于j> = 0 && pattern [i]!= pattern [j] {
应该
对于j> 0 && pattern [i]!= pattern [j] {
- 1 回答
- 0 关注
- 235 浏览
添加回答
举报
0/150
提交
取消