1. 程式人生 > >LeetCode 796題 旋轉字串 -- JavaScript

LeetCode 796題 旋轉字串 -- JavaScript

題目描述:

給定兩個字串, A 和 B

A 的旋轉操作就是將 A 最左邊的字元移動到最右邊。 例如, 若 A = 'abcde',在移動一次之後結果就是 'bcdea' 。如果在若干次旋轉操作之後,A 能變成 B,那麼返回 true

示例 : 

輸入: A = 'abcde', B = 'cdeab'
輸出: true
輸入: A = 'abcde', B = 'abced'
輸出: false

注意:

  • A 和 B 長度不超過 100

方法分析:

該題從定義出發。A的旋轉字串即依次將A最左邊的字元移動到最右邊即可。那麼A一共有多少個旋轉字串呢?應該是A.length個(包括A自身)。把所有A

的旋轉字串放入一個數組之中,最後判斷該陣列中是否包含B,即可知道B是否為A的旋轉字串了。

程式碼實現:

var rotateString = function(A, B) {
  let len = A.length;
  let result = [A];
  for(let i = 0;i < len - 1;i++){
    A = A.slice(1) + A[0];
    result.push(A);
  }
  return result.includes(B);
};

還有一種簡便的方法:

var rotateString = function(A, B) {
  if(A.length != B.length) return false;
  return A.repeat(2).includes(B);
};

程式碼解析: