串部分伪代码
1、以顺序存储结构表示串,设计算法。求串 S S S中出现的第一个最长重复子串及其位置并分析算法的时间复杂度
文字思想:
本质上就是模式匹配
假设字符串长度为n,下标从0开始:
1)i…n-1的字符依次作为子串subStr,其中i∈[0,n-1]
2)对subStr求next数组,保留其中最大值
3)对所有subStr的最大值中的最大值,就是该字符串的最大重复长度
// 改进next数组
int getNextMax(char *s,int *next) {
// 获取s的长度
int len = strlen(s);
int i = 0, // 逐位求next值
k = -1, // 用于求next的值
max = 0; // 当前next数组的最大值
next[0] = -1; // next数组中第一位特殊处理
// 逐位求
while (