字符串左旋转是指从前缀侧逆时针移动给定数量的字符并将其添加到后缀侧。类似地,字符串的右旋转意味着给定字符串的字符顺时针移动,但与左旋转正好相反,并且从后缀中选取给定数量的字符并将其添加到字符串的前缀中。在本文中,我们将实现给定字符串的左旋转和右旋转的 JavaScript 程序。
在这个问题中,我们得到一个字符串和一个数字。该数字表示我们必须向任一方向旋转绳子多少次。正如我们对顺时针和逆时针旋转有所了解意味着从给定字符串中从起始或前缀侧或从结束或后缀侧获取一些字符,然后从中删除并添加到字符串的末尾。
字符串的长度和给定字符串中字符的频率不会改变,只是当前字符串的排列发生变化。
例如,给定一个字符串:apple
那么给定字符串的左旋转将如下 -
苹果
请
leapp
eappl
苹果
我们可以看到给定字符串的第五次旋转与当前字符串相同,因此不可能再进一步旋转。
给定字符串的右旋转将如下 -
eappl
leapp
请
普利亚
苹果
我们可以看到给定字符串的第 5 次右旋转与初始字符串相同,因此如果我们进一步旋转字符串,不会再出现不同的结果。
从上面的例子中,我们可以得出结论,通过将字符串向左或右侧旋转其长度大小的次数,最终将得到与初始字符串相同的字符串。因此,如果给出的旋转次数大于字符串的长度,那么我们可以采用模式,它会给出完全相同的答案。
我们已经了解了字符串左右旋转的基本示例,现在让我们逐步进行讨论,以更好地理解之后将要实现的代码。
首先,我们将在一个变量中获取给定的字符串,并将所需的旋转次数存储在另一个变量中。我们也可以打印它们以获得更好的比较。
我们将创建两个函数,第一个用于左旋转,第二个用于字符串的右旋转。
对于每个函数,我们将传递给定的字符串和旋转变量的数量作为参数。
在左旋转函数中,我们将获取包含最后 k 个元素和第二个剩余元素的两个子字符串,并交换它们的位置。
在右旋转函数中,我们将得到包含第一个 k 元素和第二个包含剩余元素的两个子字符串,并交换它们的位置。
// function for left rotation function left_rotation(str,k){ // getting prefix elements and remaining elements // switiching there place var new_str = str.substr(k) + str.substring(0,k); // printing the rotated string console.log("String after kth left rotation is: " + new_str); } // function for right rotation function right_rotation(str,k){ // getting suffix elements and remaining elements // switiching there place var new_str = str.substr(str.length - k) + str.substring(0,str.length-k); // printing the rotated string console.log("String after kth rigth rotation is: " + new_str); } // given string var str = "apple" var k = 2 // printing the given string console.log("The given string is: " + str); // getting left rotation left_rotation(str,k); // getting right rotation right_rotation(str,k)
在上面的程序中,我们给出的“k”或旋转次数小于字符串的大小,如果 k 大于字符串的大小,那么上面的代码将给出错误,但如下我们在介绍部分已经看到,字符串长度重复多次后的旋转,可以通过给定字符串长度获取当前数字的众数来计算,为了安全起见,我们总是可以这样做 - p>
k = k % (str.length)
这里,str是给定的字符串。
上述代码的时间复杂度为 O(N),其中 N 是给定字符串的大小。在上面的代码中,我们只是获取字符串字符并以不同的方式分解和添加它们,使得时间复杂度呈线性。
上面代码的空间复杂度是O(1),因为我们没有使用任何额外的空间,只是将一个字符串存储到另一个字符串中,该空间用于答案,所以没有使用额外的空间。 p>
在本教程中,我们实现了给定字符串的左旋转和右旋转的 JavaScript 程序。字符串左旋转意味着逆时针移动给定数量的字符,字符串右旋转意味着顺时针移动给定数量的字符。我们使用了子字符串的概念,通过子字符串来分解字符串并在另一侧添加后缀或前缀。给定程序的时间复杂度为 O(N),空间复杂度为 O(1)。
以上是用于左旋转和右旋转字符串的 JavaScript 程序的详细内容。更多信息请关注PHP中文网其他相关文章!