JavaScript 中字符串的循环左移和右移


该问题的核心目标是在 Javascript 中对字符串进行循环移位操作。循环移位可以是左移或右移。并在 Javascript 中实现此解决方案。

理解问题

眼前的问题是利用 Javascript 的功能对字符串进行循环左移和右移。循环移位意味着我们必须以循环的方式移动给定字符串的字符,其中要移位的字符超出字符串的边界,并且应该在另一端重新出现。

给定问题的逻辑

为了解决这个问题,我们将实现两个函数。第一个函数将字符向左移动,第二个函数将字符向右移动。这两个函数都将字符串和要移动的位置数作为输入。

第一个函数将通过对给定位置与字符串长度取模来计算有效的位置数。然后,我们将使用 substring 方法提取字符串的一部分,并将从开头到计算位置的字符串部分连接起来。

第二个函数也将执行与第一个函数相同的步骤,但在此函数中,我们将以相反的顺序提取子字符串。因此,我们将借助模数计算有效的位置数。最后,将该部分与从开头到字符串长度与计算位置之差的字符串连接起来。

Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.

算法

步骤 1:正如我们上面讨论的那样,我们将分别创建两个函数。因此,在此步骤中,我们将定义第一个函数并将其命名为 shiftLeft,此函数接受两个参数,第一个是字符串,第二个是位置。字符串是要执行此任务的输入字符串,位置是有效的位置数。

步骤 2:定义函数后,我们将通过对给定位置与给定字符串的长度取模来计算位置数。

步骤 3:因此,在此阶段,我们将使用 substring 方法提取字符串的一部分,该部分将从计算出的位置开始到字符串的末尾。并将其与从开头到计算位置的字符串部分连接起来。

步骤 4:定义第二个函数以将字符串的字符向右移动。与上面的函数类似,此函数也接受两个参数字符串和位置。

步骤 5:由于此函数也遵循类似的过程,但在此函数中,我们将以相反的顺序提取字符串。因此,我们将借助模数计算有效的位置数。

步骤 6:然后,我们将提取从字符串长度与计算位置之差到字符串末尾的字符串部分。

步骤 7:之后,我们将连接从开头到字符串长度与计算位置之差的字符串部分。

示例

Open Compiler
//Function to do circular shift left function shiftLeft(str, positions) { // handle positions larger than string length positions = positions % str.length; return str.substring(positions) + str.substring(0, positions); } //Function to do circular shift right function shiftRight(str, positions) { // handle positions larger than string length positions = positions % str.length; return str.substring(str.length - positions) + str.substring(0, str.length - positions); } const originalStr = 'Hello Tutorials Point'; const leftShifted = shiftLeft(originalStr, 3); const rightShifted = shiftRight(originalStr, 2); console.log(leftShifted); console.log(rightShifted);

输出

lo Tutorials PointHel
ntHello Tutorials Poi

复杂度

由于我们创建了两个函数来执行以循环方式向左和向右移动字符的任务。这两个函数的时间复杂度都是 O(n),其中 n 是给定输入字符串的大小。这两个函数消耗的空间也是 O(n)。因为我们创建了一个长度为 n 的新字符串来连接子字符串,这需要额外的空间。

结论

我们实现的代码已成功地在 Javascript 中将字符串的字符以循环方式向左和向右移动。时间和空间复杂度是线性的,并且与字符串的输入大小成正比。

更新于: 2023-08-16

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告