-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkt.kt
More file actions
30 lines (30 loc) · 683 Bytes
/
Copy pathkt.kt
File metadata and controls
30 lines (30 loc) · 683 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fun zAlgorithm(s: String): IntArray {
val Z = IntArray(s.length)
Z[0] = s.length
var l = 0
var r = 0
for (i in 1 until s.length) {
if (i > r) {
l = i
r = i
while (r < s.length && s[r - l] == s[r]) {
r++
}
Z[i] = r - l
r--
} else {
val k = i - l
if (Z[k] < r - i + 1) {
Z[i] = Z[k]
} else {
l = i
while (r < s.length && s[r - l] == s[r]) {
r++
}
Z[i] = r - l
r--
}
}
}
return Z
}