使用O(1)额外空间反转单词

使用o(1)额外空间反转单词

一个字符串可能由多个%ignore_a_1%组成。C++字符串中的每个单词可以包含字母、数字或特殊符号。字符串被认为是这些字符的存储元素。每个单词由一个空格字符分隔。每个单词也形成一个字符的字符串。在C++中,任何字符串的反向是遵循以下几点的字符串−

它是通过从末尾向开头取字符形成的。

原始字符串的长度保持不变。

字符在字符串中出现的顺序可以通过交换单词开头和结尾的字符来轻松地颠倒。

常数辅助空间用O(1)表示,这意味着程序在执行过程中不需要额外的空间。

一些说明问题的例子如下:

示例示例

示例1 – str:Abc def

输出:cbA fed

解释:在反转字符串时,字符的情况保持不变。

示例2 – str:嗨spe%32

输出:yeH 23%eps

问题陈述可以通过提取每个单词并为每个单词维护一对开始和结束指针,然后进行反转来解决。

算法

第一步−使用for循环遍历提供的输入字符串。

第二步 – 使用变量st捕获第一个单词的起始字符。

步骤 3 − 一旦遇到第一个空格,lst变量就会固定在前一个字符上,以标记单词的起始和结束字符。

步骤 4 − 使用这两个指针和一个 while 循环,将该单词的字符进行反转。在每次 while 循环的迭代中,指针会被移动以穷尽字符串。

Step 5 − The values are updated to shift the pointers to the next subsequent word and so on. st is reinitialised to the next character after space.

第6步 – 整个字符串被迭代,相应的单词被反转。

示例

以下的C++代码片段以一个字符串作为输入,并反转其中包含的单词 –

// including the required libraries#include using namespace std;//reversing current word of stringvoid reverseWord(string &st, int s, int e){   while (s < e) {      swap(st[s], st[e]);      s++;      e--;   }}//reverse the words of a stringstring reverseString(string str){   int len = str.length();   //initialising the pointer with the first letter of the input string   int st = 0;   for (int i = 0; i <= len; i++) {      //stop the pointer at the first word      //either a space will be found indicating end of word or the string is finished      char ch = str[i];      if (ch == ' ' || i == len) {         //fetching the last character of the current word of the string         int lst = i - 1;         // Reverse the current word         reverseWord(str, st,lst);         //since the ith character is string , go to i+1 th character to fetch next word         st = i + 1;      }   }   return str;}//calling the method to reverse wordsint main(){   //input string   string str = "Reverse words Tutorials Point";   cout<<"original String:"<<str;   //reversed string   string revstr = reverseString(str);   cout << "nReversed string : "<< revstr;   return 0;}

输出

original String:Reverse words Tutorials PointReversed string : esreveR sdrow slairotuT tnioP

空间复杂度

上述方法所需的空间是恒定的,因为没有对任何类型的变量进行新的初始化。不需要外部空间存储来交换单词。所有的修改都是在可用的存储变量中进行的。

结论

字符串由字符组成,可以按任意顺序排列或通过简单的迭代反转。由于算法对存储在其中的字符的整个范围执行单次迭代,所需的总时间为O(n),其中n是字符串的长度。

以上就是使用O(1)额外空间反转单词的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:22:22
下一篇 2025年12月17日 22:22:33

相关推荐

  • css中设置英文单词之间间距的属性是什么

    css中设置英文单词之间间距的属性是word-spacing。word-spacing属性可以增加或减少字与字之间的空白,如【p{word-spacing:30px;}】。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 css中有一个word-spacing属性…

    2025年12月24日
    000
  • html5导出excel表格_使用前端库生成Excel文件【方法】

    可在%ignore_a_1%中用前端库直接生成Excel:一、SheetJS适合快速导出JSON/HTML为.xlsx;二、exceljs支持样式和公式但体积大;三、HTML表格转.xls为轻量兼容方案。 如果您希望在浏览器中直接生成并导出 Excel 文件,而无需后端参与,则可以借助轻量级前端 J…

    2025年12月23日
    200
  • html 如何弹窗_使用HTML与JavaScript实现弹窗【实现】

    需结合HTML与JavaScript实现弹窗:一、用alert/confirm/prompt;二、自定义模态框(HTML结构+CSS样式+JS控制);三、data属性传参复用;四、禁滚动并聚焦;五、Esc键关闭。 如果您希望在网页中显示一个临时的提示窗口,用于展示信息、确认操作或收集用户输入,则需要…

    2025年12月23日
    200
  • 使用CSS实现可滚动、自适应边界的Flex Wrap容器

    本教程详细阐述了如何纯粹使用CSS,创建一个可滚动且不超出父容器边界的Flex Wrap布局。核心解决方案在于结合父容器的position: relative与子容器的position: absolute、height: 100%、width: 100%及overflow: scroll属性。文章将…

    2025年12月23日
    000
  • 解决HTML表格行间距问题的CSS技巧

    本文旨在解决%ignore_a_1%表格中因元素默认外边距导致的意外行间距问题。通过深入分析,我们发现即使应用`border-collapse: collapse;`,内部块级元素的默认外边距仍可能制造间隙。教程提供了两种有效的css解决方案:一是使用递归选择器统一清除容器内所有子元素的默认外边距;…

    2025年12月23日
    000
  • CSS多行文本截断:无省略号的实现方法

    本文将详细介绍如何在%ignore_a_1%中实现多行文本截断,同时避免显示传统的省略号。通过精确计算文本行高并设置固定容器高度,结合`overflow: hidden`属性,开发者可以实现对溢出文本的干净截断,适用于需要保持页面布局整洁的场景,尤其是在需要避免默认省略号行为时。 在网页设计中,处理…

    2025年12月23日
    000
  • 响应式图片上的标记定位:img-fluid与绝对定位的实践指南

    本教程详细阐述如何在应用了 `img-fluid` 类的响应式图片上精确叠加标记。通过引入一个相对定位的父容器,巧妙地将响应式行为作用于容器而非图片本身,并利用%ignore_a_1%的绝对定位和 `calc()` 函数,实现灵活且精准的坐标定位,尤其解决了标记尖端对齐的挑战,确保在不同屏幕尺寸下标…

    2025年12月23日 好文分享
    000
  • 纯CSS替换标签文本内容的教程

    本教程详细介绍了如何利用纯%ignore_a_1%技术替换html ` `标签的文本内容。我们将探讨两种主要方法:通过`text-indent`将原始文本移出视口,或通过`font-size`将其隐藏,然后结合`::before`伪元素插入新的可见文本。文章将提供具体的css代码示例,并强调这种纯c…

    2025年12月23日
    000
  • CSS实现动态高度内容平滑展开的技巧:使用max-height进行过渡动画

    本文探讨了在web开发中实现动态高度内容平滑展开的常见挑战。由于%ignore_a_1%无法直接对`height: auto`进行过渡动画,导致内容在显示时出现突兀的“跳跃”效果或不必要的间距。文章详细介绍了如何通过巧妙地利用`max-height`属性结合css `transition`来克服这一…

    2025年12月23日
    000
  • 使用CSS :has() 彻底自定义无原生单选按钮的表单元素

    本文详细介绍了如何利用%ignore_a_1%的`:has()`选择器,实现彻底隐藏html原生单选按钮(radio input)并对其父级标签进行完全自定义样式。核心方法是通过将原生单选按钮设置为透明并绝对定位,同时使用`:has()`选择器根据其选中状态来控制父级“元素的背景色等样式,从而在不…

    2025年12月23日
    000
  • JavaScript手风琴组件:实现单面板展开模式

    本教程详细阐述如何优化JavaScript手风琴(Accordion)组件,使其在任何时候都只允许一个面板展开。通过采用事件委托机制,并结合遍历关闭其他面板的逻辑,我们能够有效避免多个面板同时打开的问题,从而提升用户界面的清晰度和交互体验。文章将提供具体的JavaScript代码实现、相关的HTML…

    2025年12月23日
    000
  • 掌握CSS scroll-snap:解决嵌套结构下的滚动吸附问题

    本文详细介绍了%ignore_a_1% `scroll-snap`属性在多层嵌套容器中的应用方法。针对滚动容器内部存在中间层包裹子元素导致吸附失效的问题,文章阐述了如何正确配置`scroll-snap-type`于滚动容器,以及`scroll-snap-align`于吸附目标元素。通过具体代码示例,…

    2025年12月23日
    000
  • 如何解决HTML元素因滚动条导致水平对齐不一致的问题

    本教程旨在解决%ignore_a_1%在水平居中时,因其中一个元素存在滚动条而导致对齐偏差的问题。核心方案是通过精确控制滚动条的出现位置,将其限制在需要滚动的元素内部,并结合css的`box-sizing`属性,确保元素宽度计算的准确性,从而实现不同父级元素间的完美水平对齐。 在网页布局中,我们经常…

    2025年12月23日
    000
  • JavaScript 实现水平滚动菜单的初始居中定位

    本教程详细介绍了如何使用%ignore_a_1%和css构建一个基础的水平滚动菜单,并利用javascript实现菜单内容在页面加载时自动居中显示。通过精确计算滚动容器的宽度和内容宽度,我们可以动态调整`scrollleft`属性,确保用户首次访问时,菜单的中间部分能够呈现在可视区域的中心,从而提升…

    2025年12月23日
    100
  • HTML5怎么实现进度条_HTML5进度条组件开发

    使用HTML5的标签可快速实现进度条,结合CSS和JavaScript能动态更新和美化样式;若需更高灵活性,可用div模拟进度条组件,通过JS控制宽度和文本实现自定义效果。 用HTML5实现进度条其实很简单,主要依赖 标签和少量CSS样式,再结合JavaScript动态控制值即可。如果你需要更灵活的…

    2025年12月23日
    000
  • 如何将视频设置为全屏背景

    本文详细介绍了如何使用HTML5 `video` 标签和CSS实现全屏视频背景效果。教程涵盖了关键的HTML属性(如`autoplay`、`loop`、`muted`)和CSS样式(如`position: fixed`、`min-width`、`min-height`、`z-index`),确保视频…

    2025年12月23日
    100
  • html5文件如何预览Word文档内容 html5文件Office文档的在线查看

    可通过四种方案在HTML5中预览Word文档:一、使用OneDrive或Google Drive的在线预览服务,通过iframe嵌入共享链接;二、前端引入mammoth.js库解析.docx文件并转换为HTML显示;三、后端用python-docx将文档转为HTML,前端接收后渲染;四、部署Only…

    2025年12月23日
    000
  • 解决Flask应用中持续出现的404错误:排查与配置指南

    本文旨在解决flask应用中常见的404错误,尤其是在%ignore_a_1%配置看似正确的情况下。核心内容聚焦于排查服务器绑定地址与端口配置不当以及防火墙阻碍连接两大主要原因,并提供详细的解决方案,包括调整`app.run`参数以确保应用在正确的网络接口上监听,以及检查系统防火墙设置,从而帮助开发…

    2025年12月23日
    000
  • CSS教程:使用Flexbox将导航栏精准定位到右侧

    本教程详细介绍了如何利用CSS Flexbox将网页导航栏(Navbar)精确地定位到页面的右侧,同时保持其背景透明。文章通过具体代码示例,解释了display: flex、flex-direction和align-items等关键Flexbox属性的应用,旨在帮助初学者掌握现代CSS布局技巧,实现…

    2025年12月22日
    000
  • 使用CSS在图片上叠加多个标记:教程与实践

    本教程详细阐述了如何利用CSS的position: relative和position: absolute属性,实现在一张底图(如地图)上精确叠加多个标记或图标。通过构建一个相对定位的容器,并对内部的标记图片进行绝对定位,可以实现灵活且可控的图像叠加效果,适用于地图标注、产品展示等多种场景。 核心概…

    2025年12月22日 好文分享
    000

发表回复

登录后才能评论
关注微信