【问题标题】:the resulting "count" of "pattern" string in not getting print. here is the code没有得到打印的“模式”字符串的“计数”。这是代码
【发布时间】:2018-08-03 09:46:00
【问题描述】:

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

【问题讨论】:

    标签: string go knuth-morris-pratt


    【解决方案1】:

    对于 j >= 0 && 模式[i] != 模式[j] {

    应该是

    对于 j > 0 && 模式[i] != 模式[j] {

    【讨论】:

    • 对不起,它仍然没有显示任何内容。
    • 哦,它在编辑 j >= 0 && text[i] != pattern[j] 的这一行“代码”后运行了
    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多