数据结构文本文件单词的检索与计数预习

实验内容

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

实验思路

1.大致思路

第一步:创建一个String类变量,储存文本文档路径。
第二步:创建一个String类数组,将文本文档的内容包括空格,全部导入到数组中。
第三步:输入待查找的单词,使用模式匹配算法,找到对应的单词,用变量记录下位置,并判断其前后是否有空格(即判断它是否为单独的单词,而不是其他单词的一部分)。若判断返回true,则返回单词位置,并继续向前遍历。计数器自加,若判断返回false,则继续向前遍历。

2.算法

1、朴素模式匹配算法

就是遍历主串,然后把待匹配字符串与子串进行比对,先把待匹配子串的第一个字母与主串进行匹配,若匹配成功,则两串的坐标依次 ++,匹配不成功时,主串坐标返回到开始匹配时的坐标,待匹配串坐标清零,若待匹配坐标等于待匹配子串长度,则证明匹配成功, 返回匹配完毕主串的第一个坐标,否则返回-1
假设主串的长度为N,待匹配串的长度为M,因为需要遍历主串,每次匹配的长度都小于等于M,所以
它的时间复杂度是O(M*N)的

2、KMP模式匹配算法

KMP算法是在朴素模式匹配算法的基础上进行改进的,改进之处就是每当从某个起始位置开始一趟比较后,在匹配过程中出现失配,不回溯i,而是利用已经得到的部分匹配结果,将一种假想的位置定位“指针”在模式上向右滑动尽可能远的一段距离到某个位置后,继续按规则进行下一次的比较。

编程语言及开发环境

编程语言:java
开发环境:IntelliJ IDEA 2019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值