796. 旋转字符串

给定两个字符串, A 和 B。

A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' 。如果在若干次旋转操作之后,A 能变成B,那么返回True。

示例 1:
输入: A = 'abcde', B = 'cdeab'
输出: true

示例 2:
输入: A = 'abcde', B = 'abced'
输出: false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

解1

逐位移动判断

/**
 * @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
    }
    A = A.split('')
    let i = 0
    while (i < A.length - 1) {
        A.push(A[0])
        A.shift()
        if (A.join('') == B) {
            return true
        }
        i++
    }
    return false
};

解2

判断B是不是在A首位相连后的结果中

/**
 * @param {string} A
 * @param {string} B
 * @return {boolean}
 */
var rotateString = function(A, B) {
    return A.length == B.length && (A += A).indexOf(B) != -1
};

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注