public int[] lpc() {
			int phi[] = new int[n];
			int plcp[] = new int[n];
			lcp = new int[n];
			phi[sA[0].index] = -1;

			for (int i = 1; i < n; i++) {
				phi[sA[i].index] = sA[i - 1].index;

			}
			int L = 0;
			for (int i = 0; i < n; i++) {
				if (phi[i] == -1)
					plcp[i] = 0;
				else {
					while (i + L < n && phi[i] + L < n
							&& cad[i + L] == cad[phi[i] + L])
						L++;

					plcp[i] = L;
					L = Math.max(L - 1, 0);
				}
			}
			for (int i = 0; i < n; i++) {
				lcp[i] = plcp[sA[i].index];
			}

			return lcp;

		}