📌  相关文章
📜  Javascript程序检查是否可以通过将另一个字符串旋转d个位置来获得一个字符串(1)

📅  最后修改于: 2023-12-03 15:01:49.181000             🧑  作者: Mango

Javascript程序检查是否可以通过将另一个字符串旋转d个位置来获得一个字符串

在处理字符串相关的问题时,经常需要检查两个字符串是否相等或者是否存在某种关系,本文介绍了一种判断是否可以通过将一个字符串旋转d个位置来获得另一个字符串的方法。

方法介绍

假设原字符串为s,目标字符串为t,如果可以将s旋转d个位置得到字符串t,则说明s和t是由同样的一串字符按照不同的顺序组成的。

例如,对于字符串s="abcdefg",如果将其旋转2个位置,得到字符串"defgabc",如果另一个字符串t="gabcdef",则将t向左旋转1个位置可以得到与s相同的字符串"defgabc"。

因此,只需要将原字符串s复制一份拼接在一起,再求其所有长度为|t|的子串,判断这些子串是否与t相等即可。

代码实现
function canRotate(s, t, d) {
  if (s.length !== t.length) {
    return false;
  }
  const n = s.length;
  s = s + s;
  for (let i = 0; i < n; i++) {
    const sub = s.substring(i, i + n);
    if (sub === t) {
      return true;
    }
  }
  return false;
}

该函数接受三个参数,分别表示原字符串s、目标字符串t和旋转的位数d。如果可以将s旋转d个位置得到t,则返回true,否则返回false。