当前位置: 首页 > news >正文

数据结构与算法基础-学习-14-线性表之串

一、串的定义

由0-n个字符组成的有限序列。(n>=0)

二、串的相关术语

1、子串

串中任意个连续字符组成的子序列成为该串的子串。

2、主串

包含子串的串成为主串。

3、字符位置

字符在序列中的序号为该字符在串中的位置。

4、子串位置

子串第一个字符在主串中的位置。

5、空格串

一个或多个空格组成的串。和空串不同。

6、串相等

两个字符串的长度相等且每一位上的字符都相等。

7、空串

不存任何字符的序列。所有空串相等。

三、串的存储结构

1、顺序串

(1)顺序串结构体

#define SqStrSize 10//顺序串
typedef struct SqStr
{char StrArray[SqStrSize];int SqStrLen;
}SqStr;

2、链串

(1)链串结构体

//链串
typedef struct LinkStrNode
{char c;struct LinkStrNode* NextPtr;
}LinkStrNode,*LinkStrNodePtr;typedef struct LinkStr
{LinkStrNodePtr HeadPtr;LinkStrNodePtr TailPtr;int LinkStrLen;
}LinkStr;

(2)块链结构体

#define ChunkSize 10//块链
typedef struct ChunkNode
{char StrArray[ChunkSize];struct ChunkNode* NextPtr;
}ChunkNode,*ChunkNodePtr;typedef struct ChunkLink
{ChunkNodePtr HeadPtr;ChunkNodePtr TailPtr;int ChunkLinkLen;
}ChunkLink;

3、存储密度对比

存储密度公式:存储密度 = 串值所占的存储 ➗ 实际分配的存储。

例如存储100个字符:

(1)顺序串存储密度=100除以(100+4)≈ 0.96(int类型4个字节)

(2)链串存储密度 = 100除以((1+4)*100)= 0.2(一个节点有一个指针域,一个指针占4个字节)

(3)块链存储密度 = 100除以((10+4)*10)≈ 0.71(一个节点有一个指针域,一个指针占4个字节,假设一个数据域存储十个字符,一共10个节点可以存100个字符)

四、字符串匹配算法

字符串匹配算法可以参考之前写的文章《leecode-C语言实现-28. 找出字符串中第一个匹配项的下标》,里面有BF算法介绍和KMP算法具体实现以及个人理解。

相关文章:

数据结构与算法基础-学习-14-线性表之串

一、串的定义由0-n个字符组成的有限序列。(n>0)二、串的相关术语1、子串串中任意个连续字符组成的子序列成为该串的子串。2、主串包含子串的串成为主串。3、字符位置字符在序列中的序号为该字符在串中的位置。4、子串位置子串第一个字符在主串中的位置…...

Mac 快捷键

目录 命令行快捷键 命令行快捷键 control d 命令行中代表发送EOF终止输入 control u 删除光标之前到行首的字符 control k 删除光标之前到行尾的字符(比较常用) control a 移动光标到行首(常用) control e 移动光标到行尾 control l 清屏,相当于clear命令 con…...

【微服务】-微服务环境搭建

目录 2.1 技术选型 2.2 模块设计 2.3 微服务调用 2.4 创建⽗⼯程 2.5 创建商品微服务 2.6 创建订单微服务 2.1 技术选型 持久层: SpingData Jpa 数据库: MySQL5.7 其他: SpringCloud Alibaba 技术栈 2.2 模块设计 --- shop-parent ⽗⼯程 --- shop-product-api 商品微服…...

IGKBoard(imx6ull)-ADC编程MQ-2烟雾传感器采样

文章目录1- ADC介绍2- MQ-2烟雾传感器介绍(1)工作原理(2)MQ-2应用电路3- MQ-2烟雾传感器硬件连接4- ADC驱动配置5- 编程查看当前浓度1- ADC介绍 ADC是Analog-to-Digital Converter的缩写,指模数转换器。真实世界的模拟…...

前端二面vue面试题总结

什么是 mixin ? Mixin 使我们能够为 Vue 组件编写可插拔和可重用的功能。如果希望在多个组件之间重用一组组件选项,例如生命周期 hook、 方法等,则可以将其编写为 mixin,并在组件中简单的引用它。然后将 mixin 的内容合并到组件中…...

时间API在更新,传奇已经谢幕,但技术永远不死

(Bill Joy(左一),Vinod Khosla(左二),Andy Bechtolsheim(右二),Scott McNealy(右一) ) CSDN 博文征集活动(和日期相关的代码和bug):点击这里 各位 “big guys”,这篇博文…...

SQL调优指南笔记22:Gathering Diagnostic Data with SQL Test Case Builder

本文为SQL Tuning Guide 第21章“Gathering Diagnostic Data with SQL Test Case Builder”的笔记。 SQL Test Case Builder 是一种工具,可自动收集在不同数据库实例中重现问题所需的信息。 SQL 测试用例是一组信息,使开发人员能够为遇到性能问题的特定…...

从0开始学python -43

Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根…...

Kafka基本原理

总述 简介 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各…...

css3的重点内容

css3的重点内容 浮动 父级边框塌陷问题 浮动的清除 clear:left; //清除左侧浮动 clear:right; //清除右侧浮动 clear:both; //清除两侧浮动解决方案 增加父级元素的高度增加一个空的div,之后清除浮动通过overflow来进行相关元素的修剪给父类添加相应的伪类元素…...

《Roller: Fast and Efficient Tensor Compilation for Deep Learning》

《Roller: Fast and Efficient Tensor Compilation for Deep Learning》 用于深度学习 快速高效的张量编译器 作者 微软亚洲研究院以及多伦多大学等多所高校 摘要 当前编译为了产生高效的kernel时,搜索空间大,通常使用机器学习的方法 找到最优的方案…...

顺丰同城测试开发一面 49min答案,全文7000字,面试总结都在这里了

今天给大家分享一份顺丰同城的测试开发一面面试真题。老规矩,当你看到这份面试题的时候,先不要着急去看答案,你可以想想假如你在面试现场,你会怎么回答?这个思考的过程其实也是很重要的。 全文7000字干货,…...

docker启动容器服务之后访问失败

关于docker启动容器服务之后,宿主机访问失败(解决方法) 注:在进行docker容器启动宿主机进行容器访问时,无需进行网络的配置,docker容器在启动时会自动解决 第一种原因及修改方法 在进行启动的时候&#…...

GraalVM-云原生时代的JVM(Java)

文章目录一、GraalVM是什么?二、GraalVM有哪些特点?2.1、高性能2.2、多语言支持2.3、互操作性2.4、安全性三、GraalVM的应用效果3.1、提高性能3.2、简化开发3.3、降低成本3.4、节省资源3.5、支持云环境四、使用GraalVM编译springboot应用程序4.1、下载并…...

如何外网登录访问瑞友天翼应用虚拟化系统?——快解析内网端口映射方案

瑞友天翼应用虚拟化系统(GWT System)是国内具有自主知识产权的应用虚拟化平台,是基于服务器计算(Server-based Computing)的应用虚拟化平台。如何将内网平台提供到互联网上外网访问,是我们比较关注的问题。…...

蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访

今年春节档,科幻类电影《流浪地球2》票房口碑双丰收,截至目前,累计票房已破 38 亿,淘票票评分 9.6 ,影片的特效质感可以媲美国际顶尖水平。其中,蓝海彤翔为影片的后期制作提供了出色的渲染服务。2月21日&am…...

iOS Airplay Screen Mirroring 同屏技术详解

投屏技术已经被大量用在身边的产品,比如电视投屏,投影仪,视频会议产品中。 在iOS平台外的其他平台中都已经有非常成熟的标准和实现。但在封闭的苹果iOS和Mac系统中,苹果使用私有的Airplay协议进行多屏互动,只开放给自己…...

更新 Python 100道基础入门检测练习题【下篇】(附答案)

前言 大家早好、午好、晚好吖 ❤ ~ 爆肝更新 Python 100道基础入门练习题【篇上】 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例021:猴子偷桃 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半&#xf…...

[RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments

本文主要解决的问题是在RoCEv2体系中,基于优先级的拥塞控制PFC是一种粗粒度的机制。 它在端口(或端口加优先级)级别上运行,并且不区分流。PAUSE机制是基于每个端口(和优先级)的,而不是基于每个流…...

ROS2功能包Hello world(python)

文章目录环境准备Python创建工作空间、功能包及节点方法编译使用环境准备 为了便于日后复现,相关环境已经打包到docker中。 拉取docker镜像 docker pull 1224425503/ros2_foxy_full:latest新建容器 docker run -dit --rm --privilegedtrue --network host -e NV…...

数学建模竞赛的一些心得体会

1.数学建模经验首先简要的介绍一下我的情况。数学建模我也是在大一暑假开始接触的,之前对其没有任何的了解。我本身对数学也有相对较厚的兴趣,同时我也是计算机专业的学生,因此,我觉得我可参加数学建模的这个比赛。大一的暑假参加…...

什么是自动化测试?自动化测试现状怎么样?

什么是自动化测试:其实自动化测试,就是让我们写一段程序去测试另一段程序是否正常的过程,自动化测试可以更加省力的替代一部分的手动操作。 现在自动化测试的现状,也是所有学习者关心的,但现在国内公司主要是以功能测…...

CHAPTER 2 Web HA集群部署 - Heartbeat

Web HA集群部署 - Heartbeat1. Heartbeat 概述1.1 Heartbeat主要组成部分2. 环境依赖2.1 环境及组件软件2.2 关闭firewalld & selinux2.3 配置双机互信,SSH密钥登录​​2.4 同步时间(以主节点时间为准)2.5 配置域名解析3 安装软件3.1 安装…...

蓝桥杯每日一题:不同路径数(dfs深度优先)

给定一个 nm的二维矩阵,其中的每个元素都是一个 [1,9] 之间的正整数。 从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。 走了 k 次后,经过的元素会构成一个 (k1) 位数。 请求出一共可以走出…...

NCRE计算机等级考试Python真题(十)

第十套试题1、数据库系统的核心是___________。A.数据库管理系统B.数据模型C.软件工具D.数据库正确答案: A2、下列叙述中正确的是___________。A.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的B.线性表链式存储结构与顺序存储结构的存储空…...

【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...

RK3288-android8-es7210-阵列麦克风

ES7210驱动包 应需求调试一个ES7210的阵列麦克风 首先移植 From 234647c69a57c32198c65836e7fc521dc22e444b Mon Sep 17 00:00:00 2001 From: LuoXiaoTan <lxt@rock-chips.com> Date: Tue, 10 Jul 2018 18:08:50 -0700 Subject: [PATCH] ASoC: codecs: add es7210 adc …...

硬件工程师常见问题与答疑

在工作中&#xff0c;尤其是做了很多年的&#xff0c;有些问题可能不知道&#xff0c;又不好意思问&#xff0c;怕别人说你连这个都不知道&#xff1f;很尴尬&#xff0c;而且百度又搜不到&#xff0c;本博主收集了很多答疑&#xff0c;希望里面有对你有用的&#xff0c;或者是…...

【Java】Java进阶学习笔记(一)—— 面向对象(封装)

【Java】Java进阶学习笔记&#xff08;一&#xff09;—— 面向对象&#xff08;封装&#xff09;一、类中成分1、类中成分2、this关键字this() 访问构造器方法3、static关键字1. 成员变量的区分2. 成员方法的区分3. 成员变量访问语法的区分二、封装1、封装的定义封装的好处2、…...

jsp拆迁管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 拆迁管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

手机crm/西安网站seo技术厂家

管道 客户端和Redis使用TCP协议连接。不论是客户端向Redis发送命令还是Redis向客户端返回命令的执行结果&#xff0c;都需要经过网络传输。这两个部分的总耗时称为往返时延。 根据网络性能不同&#xff0c;往返时延也不同&#xff0c;大致来说本地回环地址的往返时延在数量级上…...

保定网站制作公司/线上营销渠道有哪些

由于6.22博主要学测&#xff0c;大半时间学文化课&#xff0c;近期刷题量&写题解的数量会急剧下降。 这题出得挺经典的&#xff0c;首先一眼最小割&#xff0c;考虑朴素的做法&#xff1a;与S联通表示白色&#xff0c;与T联通表示黑色&#xff0c;S向i连流量为w[i]的边&…...

展示型网站/广告免费推广网

Table of Contents 重试机制重试的必要性重试前提重试策略重试策略分析二进制指数退避策略二进制指数退避策略实操过程二进制指数退避策略原理Q&A附录 重试机制 本文介绍系统设计中&#xff0c;常见的重试机制。重点介绍二进制指数规避策略&#xff0c;从原理至实操&…...

网站导航如何用响应式做/google网站

、1 向量1起点在向量2左侧&#xff0c;终点在左侧&#xff1b;向量2起点在向量1右侧&#xff0c;终点在右侧 2 向量1起点在向量2右侧&#xff0c;终点在右侧&#xff1b;向量2起点在向量1左侧&#xff0c;终点在左侧 3 向量1起点在向量2右侧&#xff0c;终点在左侧&#xff1b;…...

wordpress跳转移动端模板/搜索引擎技巧

2、 新建test数据库&#xff0c;在test数据库中新建book_info表&#xff0c;结构如下&#xff1a; 并向表中插入两条记录&#xff0c;两条记录中image_path字段的值分别为a.jpg和e.jpg在网站中的路径。 3、 新建Gridview.aspx页面&#xff0c;通过GridView控件按照下面的格式显…...

慈善网站建设方案/百度软文推广公司

在File类中&#xff0c;需要导入命名空间&#xff1a;using System.IO,不需要实例化&#xff0c;直接使用即可。 基本操作&#xff1a;盘存、复制、移动、删除。 基本方法&#xff1a;File.Exist()、File.Copy()、File.Move()、File.Delete() File.Create(path)----在指定路径…...