#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5+5;
string s;
int len, nxt[N], x, mx;
int main(){
cin >> s;
len = s.size();
s = ' ' + s;
for (int i = 2, j = 0;i <= len;i++){
while (j && s[j + 1] != s[i]) j = nxt[j];
if (s[j + 1] == s[i]) ++j;
nxt[i] = j;
if (i < len) mx = max(mx, nxt[i]);
}
x = nxt[len];
while (x > mx) x = nxt[x];
return 0;
}
这段代码的x是s的最短Border长度吗,是的话,原理是什么