朴素模式匹配算法与KMP算法(非重点)

\quad

一. 朴素模式匹配算法

\quad

\quad

1.1 什么是字符串的匹配模式

\quad

在这里插入图片描述
\quad
在这里插入图片描述

\quad

1.2 朴素模式匹配算法

\quad
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

\quad

1.3 通过数组下标实现朴素模式匹配算法

\quad

在这里插入图片描述
在这里插入图片描述

鄙人所写

int Indexps(SString* a, SString* b) //朴素模式匹配算法
{
	int i = 1, j = 1;
	for (int k = 0; i < a->length - b->length + 1; k++)
	{
		while(j<=b->length)
		{
			if (a->ch[i] != b->ch[j])
			{
				break;
			}
			i++;
			j++;
		}

		if (j > b->length)
		{
			return i - b->length;
		}

		i = i - j + 2;
		j = 1;


		if (i >= a->length - a->length + 2)
		{
			return 0;
		}


	}
}

优化
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

\quad

二. KMP算法

\quad

\quad

2.1 算法分析

\quad

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
\quad
\quad
\quad
第二种情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据上面的经验,i不变,变的是j,而j是未知, 我们不妨先把j指向0
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

\quad

2.2 用代码实现(只会出现在选择题,考察代码的概率不大)

\quad
先不管next数组如何实现, 会手动算就行

在这里插入图片描述
在这里插入图片描述

\quad

三. 手算next数组

\quad

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

\quad
\quad

使用next数组进行模式匹配
在这里插入图片描述
在这里插入图片描述
练习题
在这里插入图片描述

\quad

四. KMP算法的进一步优化

\quad

\quad

4.1 优化分析

\quad

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

\quad
\quad
\quad
\quad
在这里插入图片描述
在这里插入图片描述
\quad
\quad
不是所有的next数组的值都可以被优化
在这里插入图片描述
\quad

在这里插入图片描述

\quad

4.2 手算nextval数组

\quad

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关推荐

  1. 7-17 KMP模式匹配算法

    2024-07-17 18:34:02       21 阅读
  2. 算法-KMP匹配

    2024-07-17 18:34:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 18:34:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 18:34:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 18:34:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 18:34:02       69 阅读

热门阅读

  1. Nacos 服务发现(订阅)源码分析(客户端)

    2024-07-17 18:34:02       19 阅读
  2. Flask核心面试题

    2024-07-17 18:34:02       21 阅读
  3. opencv—常用函数学习_“干货“_8

    2024-07-17 18:34:02       24 阅读
  4. QT QGridLayout设置网格间距以及边框的颜色

    2024-07-17 18:34:02       19 阅读
  5. React 的生命周期方法有哪些?

    2024-07-17 18:34:02       20 阅读
  6. AI相关资源

    2024-07-17 18:34:02       23 阅读
  7. Hook 实现 componentWillMount

    2024-07-17 18:34:02       20 阅读
  8. Local Cache(一)Cache介绍

    2024-07-17 18:34:02       20 阅读
  9. Python题解Leetcode Hot100之技巧

    2024-07-17 18:34:02       21 阅读
  10. 生成式 AI 的发展方向,是 Chat 还是 Agent?

    2024-07-17 18:34:02       16 阅读
  11. 详解python基本语法

    2024-07-17 18:34:02       18 阅读
  12. I/O流的设计模式,分类,抽象类还有常用流

    2024-07-17 18:34:02       19 阅读