Llama3-8B-Chinese-Chat

我要开发同款
匿名用户2024年07月31日
60阅读

技术信息

开源地址
https://modelscope.cn/models/LLM-Research/Llama3-8B-Chinese-Chat
授权协议
llama3

作品详情

User:

用C++实现KMP算法,并加上中文注释

Assistat:

KMP(Kuth-Morris-Pratt)算法是一种字符串匹配算法,用于查找一个字符串在另一个字符串中的所有出现位置。以下是KMP算法的C++实现,包括中文注释:

#iclude <iostream>
#iclude <vector>
#iclude <strig>

// 前缀函数的计算
std::vector<it> computeLPS(cost std::strig& patter) {
    it M = patter.legth();
    std::vector<it> lps(M, 0); // lps数组,存储前缀的最长匹配长度

    it le = 0; // lps数组的当前长度
    lps[0] = 0; // lps[0]总是0

    it i = 1;
    while (i < M) {
        if (patter[i] == patter[le]) {
            le++;
            lps[i] = le;
            i++;
        } else {
            if (le!= 0) {
                le = lps[le - 1];
            } else {
                lps[i] = 0;
                i++;
            }
        }
    }

    retur lps;
}

// KMP算法实现
it KMPSearch(cost std::strig& text, cost std::strig& patter) {
    it M = patter.legth();
    it N = text.legth();

    std::vector<it> lps = computeLPS(patter);

    it i = 0; // text的当前位置
    it j = 0; // patter的当前位置

    while (i < N) {
        if (patter[j] == text[i]) {
            i++;
            j++;
        }

        if (j == M) {
            // 如果匹配完成,返回匹配的起始位置
            retur i - M;
        } else if (i < N && patter[j]!= text[i]) {
            // 如果不匹配,且text的当前字符不在patter的前缀中
            if (j!= 0) {
                // 使用lps数组中的值来移动j
                j = lps[j - 1];
            } else {
                // 如果j为0,直接移动i
                i++;
            }
        }
    }

    // 如果text中没有匹配到的patter,返回-1
    retur -1;
}

it mai() {
    std::strig text = "ABC ABCDAB ABCDABCDABDE";
    std::strig patter = "ABCDABD";

    it result = KMPSearch(text, patter);
    if (result!= -1) {
        std::cout << "Patter foud at idex " << result << std::edl;
    } else {
        std::cout << "Patter ot foud" << std::edl;
    }

    retur 0;
}

这段代码首先定义了一个计算前缀函数(lps数组)的函数computeLPS,然后定义了KMP算法的主函数KMPSearchKMPSearch函数接收两个参数textpatter,分别表示要搜索的文本和模式字符串。函数返回模式字符串在文本中的第一个匹配位置的索引,如果没有匹配则返回-1。

mai函数中,我们提供了一个例子,搜索文本"ABC ABCDAB ABCDABCDABDE"中的模式"ABCDABD"。如果找到匹配,输出将是"Patter foud at idex",随后是匹配的起始索引。如果没有找到匹配,输出将是"Patter ot foud"

请注意,这段代码假设输入文本和模式字符串只包含小写英文字母和中文字符。如果需要处理其他字符集,可能需要适当调整。


Citatio

If our Llama3-8B-Chiese-Chat is helpful, please kidly cite as:

@misc {shezhi_wag_2024,
    author       = {Wag, Shezhi ad Zheg, Yaowei},
    title        = { Llama3-8B-Chiese-Chat (Revisio 6622a23) },
    year         = 2024,
    url          = { https://huggigface.co/shezhi-wag/Llama3-8B-Chiese-Chat },
    doi          = { 10.57967/hf/2316 },
    publisher    = { Huggig Face }
}

功能介绍

User: 用C++实现KMP算法,并加上中文注释 Assistant: KMP(Knuth-Morris-Pratt)算法是一种字符串匹配算法,用于查找一个字符串在另一个字符串中的所有出现位置

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论