https://leetcode-cn.com/problems/rotate-string/
描述
给定两个字符串, A
和 B
。A
的旋转操作就是将 A
最左边的字符移动到最右边。 例如, 若 A = 'abcde'
,在移动一次之后结果就是'bcdea'
。如果在若干次旋转操作之后,A
能变成B
,那么返回True
。
示例 1:
输入: A = 'abcde', B = 'cdeab'
输出: true
示例 2:
输入: A = 'abcde', B = 'abced'
输出: false
注意:
A
和B
长度不超过100
。
分析
先获取长度判断长度是否一样,然后进行遍历截取比较。如果相等,返回true,循环结束返回false
var rotateString = function(A, B) {
let len = A.length, tmp = A
if (len < 1) {
return len === B.length
}
for (let i = 0; i < len; i++) {
tmp = tmp.slice(1) + tmp[0]
if (tmp === B) {
return true
}
}
return false
};
上面这种方式效率并不高。由于B是由A旋转而成,所以A + A必然包含B,所以就由下面的代码
var rotateString = function(A, B) {
return A.length === B.length && (A + A).indexOf(B) > -1
};