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

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript在现实世界中的应用包括服务器端编程、移动应用开发和物联网控制:1.通过Node.js实现服务器端编程,适用于高并发请求处理。2.通过ReactNative进行移动应用开发,支持跨平台部署。3.通过Johnny-Five库用于物联网设备控制,适用于硬件交互。

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),