mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-14 01:16:07 +08:00
z function added
This commit is contained in:
29
Strings/ZFunction.java
Normal file
29
Strings/ZFunction.java
Normal file
@ -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<length; i++){
|
||||
if (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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user