我試圖實現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 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
對于j> = 0 && pattern [i]!= pattern [j] {
應該
對于j> 0 && pattern [i]!= pattern [j] {
- 1 回答
- 0 關注
- 273 瀏覽
添加回答
舉報
0/150
提交
取消