最长重复子串(可重叠)

    xiaoxiao2023-03-24  5

    void getNextArray(vector<int>& next, const string& s) { next.resize(s.size() + 1); // 多加一位 next[0] = -1; int k = -1, i = 0; while ( i < s.size()) { if (k == -1 || s[i] == s[k] ) next[++i] = ++k; else k = next[k]; } } int main() {// 利用KMP算法求解,时间复杂度O(n*n) string str = "ask not what your country can do for you,but.."; vector<int> next; int ret = 0; for (int i = 0; i < str.size(); ++i){ getNextArray(next, str.substr(i)); ret = max(ret, *max_element(next.begin(), next.end())); } cout << ret << endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1202398.html
    最新回复(0)