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:
AandBwill have length at most100.
M1: use built-in methods
time = O(n), space = O(1)
class Solution { public boolean rotateString(String A, String B) { return A.length() == B.length() && (A + A).contains(B); } }
M2: two pointers
time = O(n), space = O(1)
class Solution { public boolean rotateString(String A, String B) { if(A.length() != B.length()) { return false; } int i = 0, j = 0; while(i < A.length()) { if(A.charAt(i) != B.charAt(j)) { if(j != 0) { j = 0; } else { i++; } } else { i++; j++; } } if(j == B.length()) { // same, no rotation return true; } i = 0; while(j < B.length()) { if(A.charAt(i++) != B.charAt(j++)) { return false; } } return true; } }
浙公网安备 33010602011771号