在不打印的情况下,“模式”字符串的结果“计数”。这是代码

我试图实现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)

    }


梵蒂冈之花
浏览 236回答 1
1回答

凤凰求蛊

对于j> = 0 && pattern [i]!= pattern [j] {应该对于j> 0 && pattern [i]!= pattern [j] {
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go