Formatted question description: https://leetcode.ca/all/796.html
796. Rotate String (Easy)
We are given two strings, A
and B
.
A shift on A
consists of taking string A
and moving the leftmost character to the rightmost position. For example, if A = 'abcde'
, then it will be 'bcdea'
after one shift on A
. Return True
if and only if A
can become B
after some number of shifts on A
.
Example 1: Input: A = 'abcde', B = 'cdeab' Output: true Example 2: Input: A = 'abcde', B = 'abced' Output: false
Note:
A
andB
will have length at most100
.
Solution 1.
// OJ: https://leetcode.com/problems/rotate-string/
// Time: O(N^2)
// Space: O(N)
class Solution {
public:
bool rotateString(string A, string B) {
return A.size() == B.size() && (A + A).find(B) != string::npos;
}
};
Java
-
class Solution { public boolean rotateString(String A, String B) { return A.length() == B.length() && (B + B).indexOf(A) >= 0; } }
-
// OJ: https://leetcode.com/problems/rotate-string/ // Time: O(N) // Space: O(N) class Solution { public: bool rotateString(string s, string goal) { return goal.size() == s.size() && (s + s).find(goal) != string::npos; } };
-
class Solution(object): def rotateString(self, A, B): """ :type A: str :type B: str :rtype: bool """ if A == B == "": return True for i in range(len(A)): if A[i:] + A[:i] == B: return True return False