Java教程

数据结构--串

本文主要是介绍数据结构--串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、串的定义
  • 二、串的存储
    • 1.顺序存储结构
    • 2.链式存储结构
  • 三、模式匹配
    • 1.BF(Brute Force)算法
    • 2.KMP算法
    • 3.next数组
  • 总结


前言


提示:以下是本篇文章正文内容

一、串的定义

串(string)是由零个或多个字符组成的有限序列

子串:串中任意个连续的字符组成的子序列

主串:包含子串的串

空串:0个字符的串

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

S = "abcd123"
T1 = "abcd"
T2 = "abcd124"
T1是S的子串,T2不是S的子串,T1位置在S中为0

二、串的存储

1.顺序存储结构

串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的
在这里插入图片描述

2.链式存储结构

对应串的链式存储结构,与线性表是相似的,但是由于串的结构的特殊性,结构中的每个元素数据是一个字符,就会存在很大的浪费空间。

因此,一个结点可以存储多个字符,若最后一个结点没有被占满,可以用"#"或者其他非串值字符代替补全


三、模式匹配

模式匹配:给定主串S= "s1s2s3…sn"和模式串T= “t1t2t3…tn”,在S中寻找T的过程称为模式匹配。如果匹配成功,返回T在S中的位置;如果匹配失败,返回-1。

1.BF(Brute Force)算法

BF算法,即暴力(Brute Force)算法

基本思想:从主串S的第一个字符开始和模式串T的第一个字符进行比较,若相等,则继续比较两者的后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符进行比较,重复上述的过程,直到T中的字符全部比较完毕,则说明本趟匹配成功;或者S中的字符全部比较完,则说明匹配失败。

在这里插入图片描述
当模式串T与主串S匹配不成功时,主串S和模式串T要进行回溯,模式串T中 j=0主串S中i=i-j+1

2.KMP算法

BF算法时间性能比较低,因为在每趟匹配不成功时存在大量的回溯,没有利用已经部分匹配的结果,在匹配不成功时主串不进行回溯,模式串需要向右滑动一段距离----KMP算法,可以大大避免重复遍历的情况。

3.next数组

总结

提示:这里对文章进行总结:

这篇关于数据结构--串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!