Create Z-function and its calculation.cpp #46
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Z-function and its calculation
Suppose we are given a string
of length . The Z-function for this string is an array of length where the -th element is equal to the greatest number of characters starting from the position that coincide with the first characters In other words,
is the length of the longest string that is, at the same time, a prefix of and a prefix of the suffix of starting Note. In this article, to avoid ambiguity, we assume -based indexes; that is: the first character of has index and the last one has index The first element of Z-function, is generally not well defined. In this article we will assume it is zero (although it doesn't change anything in the algorithm implementation). This article presents an algorithm for calculating the Z-function in time, as well as various of its applications.