[LC] 796. Rotate String
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
class Solution { public boolean rotateString(String A, String B) { if (A == null || B == null || A.length() != B.length()) { return false; } if (A.length() == 0) { return true; } char firstA = A.charAt(0); for (int i = 0; i < B.length(); i++) { int j = i; while (j < B.length() && B.charAt(j) != firstA) { j += 1; } if (j == B.length()) { return false; } for (int k = 0; k < B.length(); k++) { if (A.charAt(k) != B.charAt((k + j) % B.length())) { break; } if (k == B.length() - 1) { return true; } } i = j; } return false; } }