字符串匹配的几种算法

Posted xiaotuzihenmang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串匹配的几种算法相关的知识,希望对你有一定的参考价值。

字符串匹配算法:找到子串在原字符串中第一次出现的位置

字符串A:abcabcabcabc

字符串B:bca

1、朴素字符串匹配算法

假设有两个指针,一个i指向字符串A的起始位置,一个j指向字符串B的起始位置;

(1)若A[I]==B[j],则i++;j++

(2)在(1)的情况下,若A[i]!=A[j],则j=0,i回到A字符串的上一次的起始位置。

缺点:不适用于那种多个相同的,不能找到第一个相同的位置。

int string_match(char*str1, char*str2)
{
    int n = strlen(str1);
    int m = strlen(str2);
    for (int i=0;i<=n-m;i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (str1[i] != str2[j])
                break;
            if (j == m - 1)
                return i - m;
        }
    }
}
int main()
{
    char str1[1000], str2[1000];
    cin >> str1 >> str2;
    int m = string_match(str1, str2);
    cout << m;
    return 0;
}

 

以上是关于字符串匹配的几种算法的主要内容,如果未能解决你的问题,请参考以下文章

KMP算法的几种写法

KMP算法实践与简单分析

Laravel:如何在控制器的几种方法中重用代码片段

详解 Scala 模式匹配

Nginx七层负载均衡的几种调度算法

Hbuilder 代码块的几种激活方式?