diff --git a/Strings/ZFunction.java b/Strings/ZFunction.java new file mode 100644 index 000000000..9872f26be --- /dev/null +++ b/Strings/ZFunction.java @@ -0,0 +1,29 @@ +package Strings; + +public class ZFunction { + private String s; + + public ZFunction(String s){ + this.s = s; + } + + public int[] getArray(){ + int length = s.length(); + int[] z = new int[length]; + int l = 0, r = 0; + for (int i=0; i l && i <= r){ + z[i] = Math.min(z[i - l], r - i + 1); + } + while (i + z[i] < length && s.charAt(z[i]) == s.charAt(i + z[i])){ + z[i]++; + } + if (i + z[i] > r){ + l = i; + r = i + z[i] - 1; + } + } + + return z; + } +}