题目:最大值
来源:“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛)

解题思路

题目:给定字符串 s,求与字符串的前缀相同的非前缀子串的最大长度。

使用双指针,分别指向字符串的前缀和非前缀子串。

C++代码

#include<iostream>
using namespace std;

int main(){
    int t;
    cin >> t;
    while(t){
        string s;
        cin >> s;
        int cnt = 0;
        int i = 0;
        for(int j=1; j<s.length(); ++j){
            if(s[i] == s[j]){
                cnt = max(cnt, i+1);
                ++i;
            }
            else{
                i = 0;
            }
        }
        cout << cnt << endl;
        --t;
    }
    return 0;
}