Advertisement
Guest User

Z-function

a guest
Apr 25th, 2025
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getZ(string) {
  2.     const Z = new Array(string.length).fill(0);
  3.    
  4.     Z[0]=0;
  5.     let l=0, r=0;
  6.     for(let i=1; i<= string.length - 1; i++){
  7.         if(i>r){
  8.             l=r=i;
  9.             while(r<=string.length - 1 && string[r-l]==string[r]){
  10.                 r++;
  11.             }
  12.             Z[i]=r-l;
  13.             r--;
  14.         }
  15.         else{
  16.             let k = i-l;
  17.             if(Z[k] < r-i+1){
  18.                 Z[i]=Z[k];
  19.             }
  20.             else{
  21.                 l=i;
  22.                 while(r<=string.length - 1 && string[r-l]==string[r]){
  23.                     r++;
  24.                 }
  25.                 Z[i]=r-l;
  26.                 r--;
  27.             }
  28.         }
  29.     }
  30.     return Z;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement