文本文件单词的检索与计数
实验内容
实验思路
1.大致思路
第一步:创建一个String类变量,储存文本文档路径。
第二步:创建一个String类数组,将文本文档的内容包括空格,全部导入到数组中。
第三步:输入待查找的单词,使用模式匹配算法,找到对应的单词,用变量记录下位置,并判断其前后是否有空格(即判断它是否为单独的单词,而不是其他单词的一部分)。若判断返回true,则返回单词位置,并继续向前遍历。计数器自加,若判断返回false,则继续向前遍历。
2.算法
1、朴素模式匹配算法
就是遍历主串,然后把待匹配字符串与子串进行比对,先把待匹配子串的第一个字母与主串进行匹配,若匹配成功,则两串的坐标依次 ++,匹配不成功时,主串坐标返回到开始匹配时的坐标,待匹配串坐标清零,若待匹配坐标等于待匹配子串长度,则证明匹配成功, 返回匹配完毕主串的第一个坐标,否则返回-1
假设主串的长度为N,待匹配串的长度为M,因为需要遍历主串,每次匹配的长度都小于等于M,所以
它的时间复杂度是O(M*N)的
2、KMP模式匹配算法
KMP算法是在朴素模式匹配算法的基础上进行改进的,改进之处就是每当从某个起始位置开始一趟比较后,在匹配过程中出现失配,不回溯i,而是利用已经得到的部分匹配结果,将一种假想的位置定位“指针”在模式上向右滑动尽可能远的一段距离到某个位置后,继续按规则进行下一次的比较。
编程语言及开发环境
编程语言:java
开发环境:IntelliJ IDEA 2019