- 博客(5)
- 收藏
- 关注
原创 字符串匹配:从朴素算法到KMP
摘要 本文深入解析KMP字符串匹配算法的原理与实现。相比朴素算法逐个字符匹配的低效性,KMP算法通过预处理模式串的最长前缀后缀(LPS)表,利用匹配失败时的部分匹配信息实现智能跳转。文章详细阐述了LPS的定义与构建方法,通过模式串"GOOGLEGOOD"等实例演示如何利用字符串自重复性优化匹配过程。核心在于当匹配失败时,根据LPS表将模式串指针回退到可能匹配的位置,避免不必要的比较。伪代码展示了LPS表构建和匹配过程的实现细节,体现了KMP算法如何通过O(n+m)的时间复杂度实现高效匹配
2025-10-15 01:11:06
801
原创 C语言实现STL:vector(动态数组)
C语言实现动态数组的原理并不复杂,只需要实现数组元素的插入和删除、随机访问以及根据当前数组内元素数量自动调整数组占用内存大小的功能即可。唯一的难点在于存储不同类型的数据。C++ STL中的vector利用了C++的模板功能,能够存储任意类型数据,而想要在C语言中实现类似的功能,就需要利用到void*指针。void*指针只存储一个地址,而不关心这个地址内存储的数据类型,因此我们只需要按照不同数据类型的字节数来访问void*中的数据。例如,如果我们要动态分配一块内存给一个int数组,常规做法就是使用。
2024-10-31 11:20:52
1074
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2