796. Rotate String
Difficulty: Easy
Topics: String
, String Matching
Given two strings s
and goal
, return true
if and only if s
can become goal
after some number of shifts on s
.
A shift on s
consists of moving the leftmost character of s
to the rightmost position.
- For example, if
s = "abcde"
, then it will be"bcdea"
after one shift.
Example 1:
- Input: s = "abcde", goal = "cdeab"
- Output: true
Example 2:
- Input: s = "abcde", goal = "abced"
- Output: false
Constraints:
1 <= s.length, goal.length <= 100
-
s
andgoal
consist of lowercase English letters.
Solution:
We can take advantage of the properties of string concatenation. Specifically, if we concatenate the string s
with itself (i.e., s + s
), all possible rotations of s
will appear as substrings within that concatenated string. This allows us to simply check if goal
is a substring of s + s
.
Let's implement this solution in PHP: 796. Rotate String
<?php
/**
* @param String $s
* @param String $goal
* @return Boolean
*/
function rotateString($s, $goal) {
...
...
...
/**
* go to ./solution.php
*/
?>
Explanation:
Length Check: We first check if the lengths of
s
andgoal
are the same. If they are not, we immediately returnfalse
, as it's impossible fors
to be transformed intogoal
.Concatenation: We concatenate the string
s
with itself to createdoubleS
.Substring Check: We use the
strpos()
function to check ifgoal
exists as a substring indoubleS
. If it does, we returntrue
; otherwise, we returnfalse
.
Complexity:
- Time Complexity: O(n), where n is the length of the string, due to the concatenation and substring search.
- Space Complexity: O(n) for the concatenated string.
This solution efficiently determines if one string can become another through rotations.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me: