深度优先搜索(DFS)
借助题目题意创建一个二维数组,利用二维数组和标记数组进行搜索。
每次搜索到符合要求的答案之后需要按照题意对数组进行相应的重置。
KMP
用处:
kmp一般用于字符串的匹配与删除。
在kmp算法中会利用前缀表创建next数组,再利用next数组来进行主串和字串位置匹配。
例如对于字串abababc:
a的最大相同前缀长为0,存放于next [ 0 ] 位置中。
由此可同理:
ab 0 next [ 1 ]
aba 1 next [ 2 ]
abab 2 next [ 3 ]
ababa 3 next [ 4 ]
ababab 4 next [ 5 ]
abababc 0 next [ 6 ]
最后是关键的主串和字串的位置匹配
利用next数组,k下标指向主串,j下标指向字串,循环次数为主串长度,输出对应匹配位置。
单调栈
概念:
单调栈跟栈的最大区别便是在栈的性质上,栈的数组整体呈现单调递增或单调递减的趋势。
这种趋势存在的原因便是在每次存放元素入栈的时候与栈口元素进行大小比较。
如果要求存放元素比栈元素小则从左往右单调递减;否则单调递增。