数据结构--Chapter4(串与数组)

慕课网liuyubobobo老师课程学习笔记---part1: chapter1(介绍)+chapter2(数组) 1、数据结构基础   数据结构研究的是数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据或者修改数据。   数据结构的分类   课程设置 2、数组    ... 阅读详情

4 串与数组

4.1 串

    字符串(串),是由n(>=0)个字符组成的优先序列。从逻辑结构来看,串也是一种特殊的线性表,即串可以看成是每个数据元素仅有一个字符组成的线性表。长度n为0的串称为空串,即空串不包含任何字符。包含一个及以上空白字符串的串称为空白串。需要说明的是,空串和空白串的区别。空串不包含任何字符,长度为0;空白串是由一个或多个字符所组成的字符串,其长度是空白字符的个数。

4.1.1 串的抽象数据类型描述

package adt;

public interface IString {
	/**
	 * 将一个已经存在的串置为空串
	 */
	public void clear();

	/**
	 * 判断当前串是否为空。
	 */
	public boolean isEmpty();

	/**
	 * 返回串中的字符个数
	 */
	public int length();

	/**
	 * 读取并返回串中的第index个字符值。其中,0<=index<=length()-1。
	 */
	public char charAt(int index);

	/**
	 * 返回值为当前串中从序号begin开始,到序号end-1为止的子串。其中,0<=begin<=length()-1,1<=end<=length()
	 * 。
	 */
	public IString substring(int begin, int end);

	/**
	 * 在当前串的第offset个字符之前插入串str。其中,0<=offset<=length()。
	 */
	public IString insert(int offset, IString str);

	/**
	 * 删除当前串中从序号begin开始到序号end-1为止的子串。其中0<=begin<=length()-1;1<=end<=length()。
	 */
	public IString delete(int begin, int end);

	/**
	 * 把str串连接到当前串的后面
	 */
	public IString concat(IString str);

	/**
	 * 将当前串与目标串str进行比较,若当前串大于str,则返回一个正整数; 若当前串等于str,则返回0;若当前串小于str,则返回一个负整数
	 */
	public int compareTo(IString str);

	/**
	 * 在当前串中从begin位置开始搜索与str相等的子串,所搜索成功,则返回str在当前串中的位置;否则返回-1。
	 */
	public int indexOf(IString str, int begin);
}


4.1.2 顺序串类的定义

    串的顺序存储结构与线性表的顺序存储结构类似,可以采用一组地址连续的存储单元来存储串字符序列。

package sequeue;

import adt.IString;

public class SeqString implements IString {
	private char[] strvalue;// 字符数组,存放串值
	private int curlen;// 当前串的长度

	// 构造方法1,构造一个空串
	public SeqString() {
		strvalue = new char[0];
		curlen = 0;
	}

	// 构造方法2,以字符串常量构造字符串对象
	public SeqString(String str) {
		char[] tempchararray = str.toCharArray();
		strvalue = tempchararray;
		curlen = tempchararray.length;
	}

	// 构造方法3,以字符数组构造串对象
	public SeqString(char[] value) {
		strvalue = new char[value.length];
		for (int i = 0; i < value.length; i++) {// 复制数组
			strvalue[i] = value[i];
		}
		curlen = value.length;
	}

	@Override
	public void clear() {
		this.curlen = 0;
	}

	@Override
	public boolean isEmpty() {
		return curlen == 0;
	}

	@Override
	public int length() {
		return curlen;
	}

	@Override
	public char charAt(int index) {
		if ((index < 0) || (index >= curlen)) {
			throw new StringIndexOutOfBoundsException(index);
		}
		return strvalue[index];
	}

	// 扩充字符串存储空间容量,参数指定容量
	public void allocate(int newCapacity) {
		char[] temp = strvalue;
		strvalue = new char[newCapacity];// 复制数组
		for (int i = 0; i < curlen; i++) {
			strvalue[i] = temp[i];
		}
	}

	@Override
	// 返回串中序号从begin至end-1的子串
	public IString substring(int begin, int end) {
		return null;
	}

	@Override
	// 在当前串的第offset个字符之前插入串str
	public IString insert(int offset, IString str) {
		return null;
	}

	@Override
	// 删除当前串中从序号begin开始到序号end-1为止的子串
	public IString delete(int begin, int end) {
		return null;
	}

	@Override
	// 添加指定串str到当前串尾
	public IString concat(IString str) {
		return null;
	}

	@Override
	// 将当前串与目标串str进行比较
	public int compareTo(IString str) {
		return 0;
	}

	@Override
	// 子串定位
	public int indexOf(IString str, int begin) {
		return 0;
	}

}


4.1.3 串的基本操作实现

1. 求子串操作

    求子串操作的功能是,返回当前串中序号从begin至end-1的子串。begin的范围是0<=begin<=length()-1;end的范围是1<=end<=length()。思路:

1)检查begin和end参数的合法性

2)若要截取整个串,则返回原串;否则截取从begin至end-1之间的子串

	// 返回串中序号从begin至end-1的子串
	public IString substring(int begin, int end) {
		if (begin < 0) {
			throw new StringIndexOutOfBoundsException("起始位置不能小于0");
		}
		if (end > curlen) {
			throw new StringIndexOutOfBoundsException("结束位置不能大于串的当前长度");
		}
		if (begin > end) {
			throw new StringIndexOutOfBoundsException("开始位置不能大于结束位置");
		}
		if (begin == 0 && end == curlen) {
			return this;
		} else {
			char[] buffer = new char[end - begin];
			for (int i = 0; i < buffer.length; i++) {
				buffer[i] = this.strvalue[i + begin];
			}
			return new SeqString(buffer);
		}

	}


2.  串的插入操作

    串的插入操作是指,在当前串中第offset个字符之前插入串str,并返回结果串对象。其中,参数offset的有效范围是0<=offset<=length()。思路:

1)检查插入位置的合法范围。

2)若插入时存储空间不足,则调用allocate(newCount),重新分配存储空间。

3)将strvalue中从offset开始的字符向后移动len个位置(len为待插入串str的长度)。

4)将str串插入到strvalue中从offset开始的位置。

5)改变串的长度

	public IString insert(int offset, IString str) {
		if ((offset < 0) || (offset > curlen)) {
			throw new StringIndexOutOfBoundsException("插入位置不合法");
		}
		int len = str.length();
		int newCount = curlen + len;
		if (newCount > strvalue.length) {
			allocate(newCount);// 插入存储空间不足,需扩充容量
		}
		for (int i = curlen - 1; i >= offset; i++) {
			strvalue[len + i] = strvalue[i];// 从offset开始向后移动len个字符
		}
		for (int i = 0; i < len; i++) {
			strvalue[offset + i] = str.charAt(i);// 复制串str
		}
		this.curlen = newCount;//改变串长度
		return this;
	}


3. 串的删除操作

    串的删除操作是指在当前串中删除从start到end-1之间的子串,并返回当前串对象。参数start和end的取值范围分别是0<=begin<=length()-1和1<=end<=length()。思路:

1)检查参数的合法性

2)将strvalue中从end开始到尾串的子串向前移动到从begin开始的位置。

3)当前串长度减去end-begin。

	public IString delete(int begin, int end) {
		if (begin < 0) {
			throw new StringIndexOutOfBoundsException("起始位置不能小于0");
		}
		if (end > curlen) {
			throw new StringIndexOutOfBoundsException("结束位置不能大于串的当前长度");
		}
		if (begin > end) {
			throw new StringIndexOutOfBoundsException("开始位置不能大于结束位置");
		}
		for (int i = 0; i < end - begin; i++) {
			strvalue[begin + i] = strvalue[end + i];// 从end开始至串尾的子串向前移动到从begin开始的位置
		}
		curlen = curlen - (end - begin);// 当前串的长度将去(end-begin)
		return this;
	}


4. 串的比较操作

    串的比较操作是将当前串与参数str指定的串进行比较,若当前串的值大于str的串的值,则返回一个正整数;  若当前串的值等于str的串值,则返回0;若当前串的值小于str的串值,则返回一个负整数。思路:

1)求出当前串与待比较串的长度,并把较小值赋值到n

2)从下标0到n-1依次取出两个串中对应的字符进行比较,若不等,则返回  第一个不相等的字符的数值差

3)若下标从0到n-1对应的字符均相等,则返回两个串长度的差

	public int compareTo(SeqString str) {
		int len1 = this.curlen;
		int len2 = str.length();// 求出当前串与待比较串的长度
		int n = Math.min(len1, len2);// 把较小值赋值到n

		char[] s1 = this.strvalue;
		char[] s2 = str.strvalue;
		int k = 0;
		while (k < n) {
			char ch1 = s1[k];
			char ch2 = s2[k];
			if (ch1 != ch2) {
				return ch1 - ch2; // 返回第一个不相等字符的数值差
			}
			k++;
		}
		return len1 - len2;// 返回两个串长度的差
	}


5. 串的模式匹配操作

    串的查找定位操作(也称为串的模式匹配操作)是指在当前串(主串)中寻找子串(模式串)的过程。若在主串中找到了一个和模式串相同的子串,则查找成功;若在主串中找不到与模式串相同的子串,则查找失败。当模式匹配成功时,返回模式串的首字符在主串中的为序号;当匹配失败时,返回-1。

    两种主要的模式匹配算法是Brute-Force算法和KMP算法。

1)Brute-Force模式匹配算法

    Brute-Force算法是一种简单、直观的模式匹配算法。其实现方法是:设s为主串,t为模式串,i为主串当前比较字符的下标,j为模式串当前比较的下标。令i的初值为start,j的初值为0。从主串的第start个字符(i=start)起和模式串的第一个字符(j=0)比较,若相等,则继续比较后续字段(i++,j++);否则从主串的第二个字符起重新开始和模式串比较(i返回到原位置加1,j返回到0),依次类推,知道模式串中的每一个字符依次和主串s的一个连续的字符序列相等,则称匹配成功,返回模式串t的第一个字符在主串s中的位置;否则称匹配失败,返回-1。

	public int indexOf(IString t, int start) {
		if (this != null && t != null && t.length() > 0
				&& this.length() >= t.length()) {
			int slen = this.length();
			int tlen = t.length();
			int i = start;
			int j = 0;//j为模式串当前字符的下标
			while (i < slen && j < tlen) {
				if (this.charAt(i) == t.charAt(j)) {
					i++;
					j++;//继续比较后续字符
				} else {
					i = j - i + 1;//主串下标返回原位置加1
					j = 0;//模式串下标返回到0
				}
			}
			if (j >= t.length()) {
				return i - tlen;// 匹配成功,返回子串序号
			} else {
				return -1;
			}
		}
		return -1;
	}


2)KMP算法

4.2 数组

    数组是n(n>=1)个具有相同类型的数据元素a0,a1,... an-1构成的有限序列,并且这些数据元素占用一片地址连续的内存单元。其中,n称为数组的长度。

    一维数组可以看成是一个顺序存储结构的线性表。数组元素是一维数组的数组称为二维数组,数组元素是二维数组的数组称为三维数组,以此类推。二维数组和三维数组都属于多维数组。实际上,多维数组实际上时是用一维数组实现的。

     

【软考向】Chapter 3 数据结构 本文介绍了数据结构中的线性结构、数组、矩阵、广义表、树、图等基本概念及其存储与操作方式,以及查找和排序算法。 阅读详情

相关推荐

数据结构之串与数组

很好用的串和数组的学习资料, 经过整理和测试运行... 里面讲解丰富

数据结构与算法——串与数组篇详解

串,也称为`字符串`,是一个种特殊的线性表,由n(n>=0)个字符组成的有序序列。数组:一组具有相同数据类型的数据元素的集合。数组元素按某种次序存储在一个地址连续的内存单元空间中。

♚焕蓝·未来的博客 1337

数据结构 第4~5章 串和数组 自测卷答案

一、填空题(每空1分,共20分) 1. 不包含任何字符(长度为0)的串 称为空串; 由一个或多个空格(仅由空格符)组成的串 称为空白串。 (对应严题集4.1①,简答题:简述空串和空格串的区别) 2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为 3 。 4. 子串的定位运算称为串的模式匹配; 被匹配的主串 称为目标串, 子串 称为模式。 5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。 6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为 (n-m+1)*m 。 7. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为 288 B ;末尾元素A57的第一个字节地址为 1282 ;若按行存储时,元素A14的第一个字节地址为 (8+4)×6+1000=1192 ;若按列存储时,元素A47的第一个字节地址为 (6×7+4)×6+1000)=1276 。 8. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 9188 。 答:考虑0行0列,(58列×61行+32行)×2字节+基址2048=9188?? 9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的 行下标 、 列下标 和 元素值 。 10.求下列广义表操作的结果: (1) GetHead【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号 (2) GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ; …………………………

串和数组.

串 1.串是一种特殊的线性表,其特殊性体现在数据元素是一个字符(重点)。串值也可以用链表来存储,由于串的元素数据是一个字符,只有8位二进制数,因此用链表存储时通常一个结点中存放的不是一个字符,而是一个子串。 2.当串的长度为0时,该串称为“空串”。 注意:当串由一个或多个空格组成时,则称为“空格串”,其长度为空格的数量。 3.由串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应的称为主串。 ...

weixin_62313265的博客 2147

(8)机器人动力学

机器人是一个具有多输入多输出的复杂动力学系统,存在严重的非线性,需要非常系统的方法对机器人进行动力学研究。常用的机器人动力学建模方法有:Lagrange(拉格朗日)动力学方法、Newton-Euler(牛顿-欧拉)动力学方法、Gauss(高斯)动力学方法、Kane(凯恩)动力学方法等。机器人动力学研究的是机器人的运动和作用力之间的关系。机器人的动力学问题包括动力学正问题和动力学逆问题。动力学正问题是对于给定的关节驱动力......

rouyu308的博客 9498

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

数据结构第四章——串和数组

4.1 串4.1 串4.1.1 串的基本概念1. 串是由零个或多个字符组成的有限序列。记作str="a0a1…an-1"(n≥0)。2. 串中所包含的字符个数n称为串长度,当n=0时,称为空串。3. 一个串中任意连续的字符组成的子序列称为该串的子串。4. 包含子串的串相应地称为主串。5. 若两个串的长度相等且对应字符都相等,则称两个串相等。6. 若s是一个长度为n的串,子串个数为n(n+1)/2+1。4.1.2 串的存储结构1. 串的顺序存储结构—顺序串。

2301_80419237的博客 2206

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

qq_1432825237的博客 3989

C数据结构-串和数组

一,串及其运算串(即字符串)是一种特殊的线性表,它的数据元素仅由字符组成。串是由零个或多个字符组成的有限序列。串中任意连续个字符组成的子序列称为子串。子串的第一个字符在主串中的序号,定义为子串在主串中的位置,该位置索引从0开始。特别的,空串是任意串的子串,任意串是自身的子串。串的逻辑结构与线性表极为相似,区别仅在于串的数据对象约束为字符集,但操作有很大差别。求子串,从第i位置的字符开始抽出j个字符...

shen_zhu的博客 2413

【深度解析】信息素养提升实践活动(附:历年获奖作品分析)

全国师生信息素养提升实践活动是由教育部教育技术与资源发展中心(中央电化教育馆)主办,面向全国师生的一项信息化交流展示活动。

m0_74417957的博客 2627

【Halcon-2D测量】set_metrology_object_param 函数功能(用于配置计量对象常规参数)

HALCON算子 set_metrology_object_param 是2D计量模块的核心配置工具,用于动态修改计量对象的测量区域、边缘检测和几何拟合参数。该算子需在检测前调用,支持批量或单独修改对象参数,包含三类关键参数:测量区域(如长度、间距)、边缘检测(如平滑Sigma、阈值)和几何拟合(如RANSAC阈值、最小分数)。使用时需注意参数互斥规则(如measure_distance优先于num_measures)和多线程同步要求。算子无输出参数,仅修改计量模型内部状态,需配合apply_metrolo

weixin_45590420的博客 288

第四章 串和数组(数据结构python)

an-1),其中,A是数组名,ai(0≤i≤n-1)是数组A中序号为i的元素。,a0,n-1],…KMP算法的下一次比较si/tnext[1],而next[1]=0,并且t0=t1,说明一定有si≠tnext[1]  nextval[j]=nextval[next[j]]=-1。(1)如果有tj=tk成立,可以直接推出si≠tk成立,没有必要再做si/tk的比较,直接置nextval[j]=nextval[k](nextval[next[j]]),即下一步做si/tnextval[j]的比较。

yiting2580的博客 724

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4509

【数据结构错题集】Chapter4 串、数组、广义表

1.串的特殊性 2.串的数据元素 只能是字符 3.几趟匹配&每次匹配几次比较 4.数组 差别挺大的。数组的插入删除很复杂 5. 题目想说的应该是数组的元素个数限制吧 数组一旦定义它的维数与维度就不能改变,只能修改,因此数组主要用于修改与数据的存取。 6. 7.带状矩阵 哪些地方不是0你自己记清楚 8.广义表 9.稀疏矩阵转置 m*n,直接换下标会出问题 ...

Crumble 287

YOLOv11模型剪枝实战:让检测速度翻倍,精度仅降1%的终极优化教程

模型剪枝是YOLOv11落地边缘场景的“关键一步”——它让模型在“瘦身”的同时,几乎不损失精度。从稀疏化训练到通道剪枝,再到工程部署,本教程已为你打通全流程。现在就动手尝试,让你的YOLOv11模型在嵌入式设备、移动端上也能“飞起来”——相信我,当你看到剪枝后的模型在资源受限设备上仍能精准检测时,你会明白这份技术的价值。

m0_64661770的博客 711

YOLOv12改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv12轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 1215

【数据结构】—— chapter 04 串

文章目录4.1 串的定义和实现4.1.1 串的定义4.1.2 串的基本操作4.1.3 串的存储结构4.2 串的模式匹配4.2.1 简单的模式匹配算法4.2.1 改进的模式匹配算法 —— KMP算法1. 步步模拟得到next数组 + Kmp算法代码2. next数组手算方法3. next数组算法代码 + Kmp算法代码4.2.3 KMP算法的进一步优化 —— nextval数组 4.1 串的定义和实现 4.1.1 串的定义 串是一种特殊的线性表,数据元素之间呈线性关系 ; 串的数据对象限定为字符集

S_123789的博客 658

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据结构学习笔记(考研 笔记 完结 西电)

记得收藏慢慢看!!!很长!!!

zyxxback 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构笔记chapter04_1_串

4.1.1 串的定义和基本操作 1、串的定义:(逻辑结构) 串,即字符串(String)是由零个或多个字符组成的有限序列,一般记为S = ‘a1a2······an' (n ≥0),S是串名,单引号括起来的字符序列是串的值,ai 可以是字母、数字或其他字符。 注:有的地方用双引号(Java、C),有的地方用单引号(Python) 串 中字符的个数n称为串的长度。n = 0时的串称为空串 注: (1)区分空串、空格串 (2)位序从1开始 而不是从0开始 子串:串中任意个连续的字符组成的子序列 主

qq_41994825的博客 437

数据结构与算法分析-Chapter4

sa1​a2​a3​...an​其中,s称之为串名,ai​称之为串值,n为串长。串包括了空串,字串和主串。**需要注意的是:**字串中的每一个元素的位置与原本的串中的位置相同且相邻。

HelloStrayer的博客 459

CHAPTER-4 数组

数组 使用数组进行基本运算 一维数列 -在JAVA中,数组是用来存储一组相同类型数据的数据结构。当数组初始化完毕后,JAVA为数组在内存中分配一段连续的空间,其在内存中开辟的空间没有保存任何数据,数组所占据的空间依然存在。 -定义数组 -语法 数据类型[] 数组名=new数据类型[数组长度]; 数据类型 数组名[]=new 数据类型[数组长度]; -定义数组时一定要指定数组名和数据类型 -必须书写“[]”,表示定义了一个数组,而不是一个普通的变量 -“[数组长度]”决定连续分配的空间的个数,通过数组

weixin_57307780的博客 610

chapter14 数据结构与集合源码 知识点总结Note

一个HashMap的table数组一般不会特别大,至少在不断扩容之前,那么table.length-1的大部分高位都是0,直接用hashCode和table.length-1进行&运算的话,就会导致总是只有最低的几位是有效的,那么就算你的hashCode()实现的再好也难以避免发生碰撞,这时让高位参与进来的意义就体现出来了。Set集合与Map集合的关系 Set的内部实现其实是一个Map,Set中的元素,存储在HashMap的key中。HashMap中的所有的key彼此之间是不可重复的、无序的。

qq_45654741的博客 1643

Chapter 01数据结构与算法——数组和链表

1 数组 顺序存储,即使用连续内存空间存储 提供随机访问 内存空间需一次性分配 2 链表 非顺序存储,即使用非连续内存空间存储 不提供随机访问 内存空间无需一次性分配 2.1 单向链表 2.2 双向链表 2.3 循环链表 2.4 双向循环链表 3 数组与链表的适用场景 如果需要支持随机访问的话,链表没办法做到。 如果需要存储的数据元素的个数不确定,并且需要经常添加和删除数据的话,使用链表比较合适。 如果需要存储的数据元素的个数确定,并且不需要经常添加和删除数据的话,使用数组比较合适。 4

好一个区块链 199

Chapter 4: 栈和队列

通过详细的介绍和示例,我们可以深刻理解栈和队列在数据存储和访问方式上的根本区别。栈的后进先出原则使其在解决函数调用、表达式求值等问题中表现突出,而队列的先进先出特性则让其在任务调度、消息处理等场景中发挥着关键作用。使用C语言实现这两种数据结构,不仅让我们更加了解它们的工作原理,还提供了实际操作的经验,增强了我们调试和解决问题的能力。正确的选择和使用栈或队列,能够显著影响程序的性能和可靠性。希望本文的内容能够帮助读者在今后的学习和工作中,更加灵活和有效地应用栈和队列,进而编写出更加高效的代码。

m0_74251523的博客 1145

数据结构笔记chapter04_2

4.2.1 朴素匹配算法 子串:主串中一定存在 模式串:想尝试在主串中寻找的串,未必存在 串的模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置 (1)基本操作实现模式匹配 Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S 中第一次出现的位置;否则函数值为0 //用Sub返回串S的第pos个字符串起长度为len的子串 bool SubString(SString,&Sub,SString S,int pos,int len){

qq_41994825的博客 499

《数据结构与算法图解》Chapter-4

摘要:展示了冒泡排序以及二次时间以及python代码和JavaScript代码

weixin_46143783的博客 112
上一篇: 数据结构--Chapte3(栈和队列)
下一篇: 数据结构--Chapter5(树与二叉树)
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值