leetcode 算法题796 (简单207) 旋转字符串
- 题目介绍
给定两个字符串, 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。
- 解法一
/**
* @param {string} A
* @param {string} B
* @return {boolean}
*/
var rotateString = function(A, B) {
if(A.length !== B.length) {
return false;
}
return (A + A).indexOf(B) > -1;
};
执行用时 : 64 ms, 在所有 JavaScript 提交中击败了94.06%的用户
内存消耗 : 34.1 MB, 在所有 JavaScript 提交中击败了21.28%的用户
- 解法二
/**
* @param {string} A
* @param {string} B
* @return {boolean}
*/
var rotateString = function(A, B) {
if(A.length !== B.length) {
return false;
}
let i = 0, flag = true;
while(i < A.length) {
let j = 0;
flag = true;
while(j < A.length) {
if(A[j] === B[(i + j) % A.length]) {
j++;
} else {
flag = false;
break;
}
}
if(flag) {
return flag;
}
i++;
}
return flag;
};
执行用时 : 92 ms, 在所有 JavaScript 提交中击败了25.74%的用户
内存消耗 : 37.3 MB, 在所有 JavaScript 提交中击败了6.38%的用户
- 解法三
/**
* @param {string} A
* @param {string} B
* @return {boolean}
*/
var rotateString = function(A, B) {
if (A.length !== B.length) {
return false;
}
if(A === B) {
return true;
}
let i = 1;
while(i < A.length) {
if(A === (B.substr(i) + B.substr(0, i++))) {
return true;
}
}
return false;
};
执行用时 : 64 ms, 在所有 JavaScript 提交中击败了94.06%的用户
内存消耗 : 33.9 MB, 在所有 JavaScript 提交中击败了21.28%的用户