目录标题
一、实验内容
1、实验任务
建立一个文本文件,统计给定单词在文本文件中出现的总次数及位置
2、实验要求
- 文本文件中每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写,统计给定单词在文本文件中出现的总次数,检索输出的某个单词出现在文本中的行号、在该行中出现的位置
- 设计数据量大的文本,进行子串的查询处理,分析算法运行的时间效率,对所有输出的匹配位置结果进行验证,以证明算法设计和实现的正确性
- 用朴素模式匹配算法或KMP算法实现字符串定位
- 可正确读取,保存文本
二、KMP算法的相关概念
1、朴素模式匹配算法
1.1主要思想
从主串s 和子串t 的第一个字符开始,将两字符串的字符一一比对,如果出现某个字符不匹配,主串回溯到第二个字符,子串回溯到第一个字符再进行一一比对。如果出现某个字符不匹配,主串回溯到第三个字符,子串回溯到第一个字符再进行一一比对…一直到子串字符全部匹配成功。
1.2时空复杂度
- 最好情况下时间复杂度为O(n),即子串的n个字符正好等于主串的前n个字符
- 最坏的情况下时间复杂度为O(m*n)
- 空间复杂度为O(1),即不消耗空间而消耗时间