- 博客(13)
- 收藏
- 关注
原创 KMP算法详解
因为回退后的字符与回退前的字符是相同的,所以我们已经知道‘b’与‘a’相比的结果。= P[j],i 总结出下标为3的位置回退到了下标为1的位置,j直接回退到模式串的开头。从主串的第一个字符开始与模式串的第一个字符比较,如果相同则模式串往后移动一个位置和主串的下一个位置再比较,如果不同,则主串移动到下一个字符,模式串移动到第一个字符,开始重新比较,以此类推。第二种情况也是类似的道理,实现代码基本相同,只有初始化的细节区别。而主串和模式串的绿色部分又是相同的部分,就代表着主串的绿色部分也有着相同的前后缀。
2023-10-12 21:31:20
123
原创 leetcode 6. N 字形变换(数学规律/巧设flag)
发现行数是不断的+1+1……的,而什么时候+1,什么时候-1呢。再不断的观察竖列+1,对角线-1.所以我们可以定义一个flag,我们通过观察可以看出整体都是一个重复阵型不断重复形成的,如果我们将这部分规律找出就可以解决整个题目。将字母按照Z字形排列,我们可以将每一个字母的下标全部写出来,来试着看看有没有直接的数学规律。我们将下标列出可以更好的观察规律,我们发现后面的部分都是第一部分的基础上乘以k倍的某个数。r:1-2-3-4-3-2-1-2-3-4-……设r为当前所在的行数,设row为整体行数。
2023-10-07 13:57:03
150
1
原创 leetcode 3.无重复字符的最长子串(滑动窗口/哈希优化)
我们现在只用下标是已知的。所以我们需要知道重复元素的下标,刚好使用了哈希表,可以用哈希表存储一下重复元素的下标。根据上面案例的比较,我们应该取这两种情况的最小值为子串的长度。我们可以记录字符上一次出现的位置,如果出现过就把左指针移动到max(left, 字符上一次出现的位置+1)cba子串长度为第2个a的下标减去该子串开头前一个元素的下标既第一个b的下标4 - 1 = 3。以 abcabc(b)b 开始的最长字符串为 abcabc(b)b;以 abcabcb(b) 开始的最长字符串为 abcabcb(b)
2023-10-07 11:10:14
66
1
原创 c语言动态内存分配——基本必会知识
动态内存分配——基本必会知识想要开辟任意大的空间吗,想要开辟随机应变 的空间吗,点击收藏带你了解丰富的c世界
2022-10-19 13:20:01
1188
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人