朴素匹配

 

void naive_matcher(const string &text,const string &pattern,vector<string::size_type> &vec)
{
    for(string::size_type i=0;i<=text.size()-pattern.size();i++)
    {
        for(string::size_type j=0;j<pattern.size();j++)
        {
            if(text[i+j]!=pattern[j])
            {
                break;
            }else if(j==pattern.size()-1)
            {
                vec.push_back(i);
            }
        }
    }
}

 

O((n-m+1)m)

朴素匹配算法(也称为暴力匹配算法)是一种最简单的字符串匹配算法,可以用于在一个文本串中查找一个模式串的出现位置。以下是C语言实现朴素匹配算法的示例代码: ```c #include <stdio.h> #include <string.h> int naiveMatch(char* text, char* pattern) { int textLen = strlen(text); int patternLen = strlen(pattern); for (int i = 0; i <= textLen - patternLen; i++) { int j; for (j = 0; j < patternLen; j++) { if (text[i + j] != pattern[j]) { break; } } if (j == patternLen) { return i; } } return -1; // 表示未找到匹配 } int main() { char text[] = "Hello, World!"; char pattern[] = "World"; int result = naiveMatch(text, pattern); if (result != -1) { printf("匹配成功!模式串的起始位置为:%d\n", result); } else { printf("未找到匹配!\n"); } return 0; } ``` 以上代码首先定义了一个`naiveMatch`函数,接受两个参数:`text`为文本串,`pattern`为要匹配的模式串。函数通过两重循环对文本串进行遍历,检查是否有与模式串匹配的子串。如果找到匹配,函数返回模式串的起始位置;如果未找到,则返回-1。 在`main`函数中,示例代码定义了一个文本串`text`和一个模式串`pattern`,并调用`naiveMatch`函数进行匹配。最后根据匹配结果输出相应的信息。运行代码将输出“匹配成功!模式串的起始位置为:7”。 需要注意的是,朴素匹配算法的时间复杂度为O((n-m+1)m),其中n为文本串长度,m为模式串长度。在最坏情况下,算法的效率较低,但在实际应用中,仍然有一定的适用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值