用于左旋转和右旋转字符串的 JavaScript 程序
字符串左旋转是指从前缀侧逆时针移动给定数量的字符并将其添加到后缀侧。类似地,字符串的右旋转意味着给定字符串的字符顺时针移动,但与左旋转正好相反,并且从后缀中选取给定数量的字符并将其添加到字符串的前缀中。在本文中,我们将实现给定字符串的左旋转和右旋转的 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

本文系列在2017年中期进行了最新信息和新示例。 在此JSON示例中,我们将研究如何使用JSON格式将简单值存储在文件中。 使用键值对符号,我们可以存储任何类型的

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源
