Given two strings, check whether the first can be rotated any number of times to match the second.
Example:
asd, lol: not possible
asd, sda: yes with one rotation
The key insight to solve this problem is to realize that a string concatenated with itself will contain all possible strings resulting from all its rotations:
asd becomes asdasd
All rotations of asd are: asd, sda, das and we can see that asdasd contains all of them.
Then the problem becomes a search for substring, after having checked that both strings have same length.
We can use KMP algorithm to do a N+N search using N space, stopping as soon as we find the first match, if there is none, then the string can't be rotated in the other one.
You can check my implementation of isRotation on my Gist along with some tests in IsRotationJTests.
No comments:
Post a Comment
With great power comes great responsibility