8月27日学习总结

今天主要学习了两部分的内容:KMP和字典树两部分的内容和题目。

KMP算法是当当前某个字符匹配失败时,不是向纯暴力一样,将文本串匹配的起点往右移一个,而是将在模板中当前的匹配点左移到文本串当前点所能匹配到的最大的匹配点处。通过预处理出当文本串在模板某个位置匹配失败时,应跳转到的位置,即next或F数组,将时间复杂度从O(m*n)降低为O(m+n);

KMP算法主要是应用于三类题:看的博客上都有相关例题

第一是单纯的模板题,如:

统计一个串出现的次数、找模板串第一次出现的位置、求多个字符串的最长公共连续子串、字符串合并

第二是后缀与前缀的题目,如:

找出所有前缀与后缀匹配的长度

第三种是求字符串最短循环节的题目,如:

求字符串的循环节、求最小循环节个数、补齐循环节(即补充完整一个串,使得该串有循环节构成)

字典树是一种用于字符串(但不限于字符串)的查询、统计、排序的一种数据结构。字典树查询实现的效率比哈希高。

字典树主要解决字符串前缀的问题,像找出所有以字符串s为前缀的单词个数、找出字典中是否有一个字符串是其他字符串的前缀、找出所有字符串的共同前缀问题。

反正今天看的就是这么些类型的题目。

今天看的不多,白天精神状态不是太好,还是晚上睡得晚。这样看来还是要晚上休息够,否则白天即使补觉仍然精神不集中,还是要保持一下开心的心态,心态好了之后才能更能地投入到学习。明天改进一下自己。

你可能感兴趣的:(学习总结)