首页 > 其他分享 >第四章 串

第四章 串

时间:2023-08-23 21:45:34浏览次数:31  
标签:ch return int next length SString 第四章

一、串的定长顺序存储

#define MAXLEN 255
typedef struct
{
	char ch[MAXLEN];
	int length;
}SString;

二、朴素模式匹配算法 O(mn)

	int Index(SString S,SString T)
	{
		int i = 1,j = 1;
		while(i <= S.length && j <= T.length)
		{
			if(S.ch[i] == T.ch[j]) //匹配,继续比较
				++i,++j;
			else
			{
				i = i - j + 2; //主串指针回退到子串的第二个字符
				j = 1;//模式串指针回退到第一个字符
			}
		}
		if(j > T.length) return i - T.length;//无需加1,因为i自身在下一个位置
		else return 0;
	}

三、KMP匹配算法 O(n)

匹配算法

	int Index_KMP(SString S,SString T,int next[])
	{
		int i = 1,j = 1;
		while(i <= S.length && j <= T.length)
		{
			if(j == 0 || S.ch[i] == T.ch[j])
				++i,++j;
			else
				j = next[j]; //模式串向右移动
		}
		if(j > T.length) return i - T.length;
		else return 0;
	}

next数组推导算法

	void get_next(SString T,int next[])
	{
		int i = 1,j = 0;
		next[1] = 0;
		while(i < T.length)
		{
			if(j == 0 || T.ch[i] == T.ch[j])
			{
				i++,j++;
				next[i] = j;//next[j+1] = next[j] + 1
			}
			else j = next[j];
		}
	}

标签:ch,return,int,next,length,SString,第四章
From: https://www.cnblogs.com/zjq182/p/17652817.html

相关文章

  • MongoDB :第四章:集合的创建与删除
    MongoDB创建集合本章节我们为大家介绍如何使用MongoDB来创建集合。MongoDB中使用createCollection()方法来创建集合。语法格式:db.createCollection(name,options)参数说明:name:要创建的集合名称options:可选参数,指定有关内存大小及索引的选项 options可以......
  • Kotlin-大师班 第四章-随笔
    1.init()Kotlin中,当对象被创建时,调用init()做初始化。 2.  Kotlin的函数参数都是val类型的,都不可修改。Kotlin的函数参数在函数中不可修改。 3.避免出现shadow的情况。举个例子:就是函数内定义了一个变量,变量名和参数名相同。这样一来函数内变量就把函数参......
  • Linux第四章(80X86保护模式及其编程)
    80X86保护模式及其编程80X86基础知识保护模式内存管理各种保护措施中断和异常处理任务管理保护模式编程的初始化一个简单的多任务内核4.180X86系统寄存器和系统指令为了协助处理执行初始化和控制系统操作,80X86提供了一个标志寄存器EFLAGS和几个系统寄存器,除了一些通......
  • 「Python」第一阶段第四章笔记
    while循环"""while条件:代码块"""num=255;#python没有++和--whilenum:print(num)num-=1for循环for基础语法"""for循环(感觉更像是一个foreach循环)for临时变量in序列类型:代码块"""name="OrzMiku......
  • 第四章:用户和权限管理
    第四章:用户和权限管理用户和组的概念和管理:在Linux系统中,用户和组是管理系统访问权限和资源的重要组成部分。用户代表着系统中的个体,而组则用于组织和管理用户。以下是一些用户和组管理的基本知识:用户管理:创建用户:使用useradd命令创建新用户。例如:useraddusername删除用户:使用user......
  • 第四章 项目整合管理
    4.1制定项目章程制定项目章程是编写一份正式批准项目并授权项目经理在项目活动中使用组织资源的文件的过程。本过程的主要作用是,明确项目与组织战略目标之间的直接联系,确立项目的正式地位,并展示组织对项目的承诺。输入(1)     商业文件:商业论证、.效益管理计划(2) ......
  • 第四章 Sentinel--服务容错
    4.1高并发带来的问题在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。接下来,......
  • 第四章 数据类型
    第四章数据类型由数据构成的一个矩形数组称为数据集,行称为观测,列称为变量查看R中所有内置的数据集data(package=.packages(all.available=TRUE))查看指定包中的数据集data(package=“packagename”)查看某个数据集的信息Help函数or?4.1向量向量是数值的有序集,......
  • 复习笔记|第四章 存储器管理《操作系统原理教程》
    参考教材:《操作系统原理教程(第4版)》刘美华翟岩龙著大纲问题回答(精简版)1.存储器管理的功能。名字空间、地址空间、存储空间、逻辑地址、物理地址。(1)存储器分配:解决多进程共享主存的问题(2)地址转换或重定位:研究各种地址变换方法及相应的地址变换机构。(3)存储器保护:防止故障程序......
  • Nodejs 第四章(Npm install 原理)
    在执行npminstall的时候发生了什么?首先安装的依赖都会存放在根目录的node_modules,默认采用扁平化的方式安装,并且排序规则.bin第一个然后@系列,再然后按照首字母排序abcd等,并且使用的算法是广度优先遍历,在遍历依赖树时,npm会首先处理项目根目录下的依赖,然后逐层处理每个依赖包的依......