目录
算法
示例
输出
结论
首页 后端开发 C++ 使用O(1)额外空间反转单词

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

Sep 16, 2023 pm 01:33 PM
反转 单词 o()

使用O(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 <bits/stdc++.h>
using namespace std;

//reversing current word of string
void reverseWord(string &st, int s, int e){
   while (s < e) {
      swap(st[s], st[e]);
      s++;
      e--;
   }
}

//reverse the words of a string
string 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 words
int 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 Point
Reversed string : esreveR sdrow slairotuT tnioP
登录后复制

空间复杂度

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

结论

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

以上是使用O(1)额外空间反转单词的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在沉浸式阅读器中使用Microsoft Reader Coach 如何在沉浸式阅读器中使用Microsoft Reader Coach Mar 09, 2024 am 09:34 AM

在这篇文章中,我们将向你展示如何在WindowsPC上的沉浸式阅读器中使用Microsoft阅读教练。阅读指导功能帮助学生或个人练习阅读并培养他们的识字技能。你从阅读支持的应用程序中的一段或一份文档开始,基于此,你的阅读报告由阅读教练工具生成。阅读报告显示了阅读的准确性、阅读所用的时间、每分钟的正确单词数,以及你在阅读时发现最具挑战性的单词。你还将能够练习这些单词,这总体上有助于培养你的阅读技能。目前,仅有Office或Microsoft365(包括OneNoteforWeb和WordforWe

墨墨背单词怎么重新开始背呢?分享墨墨背单词重新背单词方法! 墨墨背单词怎么重新开始背呢?分享墨墨背单词重新背单词方法! Mar 15, 2024 pm 03:28 PM

好奇墨墨背单词怎么重新开始背吗?墨墨背单词是一款十分好用的英语单词学习软件,用户可以根据英语水平和学习意向选择英语词库进行英语学习,还能通过例句和助记等方法更好的理解记忆单词等。有小伙伴背完单词了想重新开始背同样的词汇书,但不知道如何操作?小编今天为各位用户整理了墨墨背单词重新背单词方法!有帮助到你就快来下载吧!一、墨墨背单词怎么重新开始背呢?分享墨墨背单词重新背单词方法!1.打开墨墨背单词app,在复习页面中看到签到功能,选择当天日期。2.点击进入,之后会看到查看详情选项。3.跳转页面后,选择

百词斩斩掉的单词在哪?百词斩斩掉的单词查找教程! 百词斩斩掉的单词在哪?百词斩斩掉的单词查找教程! Mar 15, 2024 pm 03:52 PM

一、百词斩斩掉的单词在哪?百词斩斩掉的单词查找教程!1.进入主页,点击单词列表。2.跳转页面后,选择已斩单词选项。3.进入界面后,就可以看到被用户斩掉的单词了。4.如果想要恢复已斩的单词,点击编辑选项。5.找到需要恢复的单词,点击右侧斩图标,即可恢复该单词。6.回到已学单词界面,就可以看到刚恢复的单词了。

Windows 11 上如何启用或禁用自动更正拼写错误的单词功能 Windows 11 上如何启用或禁用自动更正拼写错误的单词功能 Sep 19, 2023 pm 10:53 PM

自动更正是一项非常有用的功能,可以在您的日常生活中节省大量时间。虽然它并不完美,但大多数时候,您可以依靠它来修复您的拼写错误和写作错误。但是,有时它不能正常工作。你会发现它无法识别一些单词,这使得它难以有效地工作。其他时候,您只想禁用它并回到旧方式。但是使用自动更正有什么好处吗?通过更正拼写错误来节省您的时间。通过显示正确的拼写来帮助您学习新单词。它可以帮助您避免电子邮件和其他文档中的尴尬错误。您将能够更快地打字并减少错误。如何在Windows11上打开或关闭拼写检查?1.使用“设置”应用点击键

如何反转和倒序 PHP 数组 如何反转和倒序 PHP 数组 Sep 05, 2023 am 08:28 AM

如何反转和倒序PHP数组在PHP中,数组是一种常用的数据结构,能够存储和操作大量的数据。有时我们需要对数组进行反转或者倒序操作,以满足特定的需求。本文将介绍如何使用PHP对数组进行反转和倒序操作,并给出相应的代码示例。一、反转数组反转数组是指将数组中的元素按照原来的顺序进行相反的重新排列。PHP提供了多种方法来实现数组的反转,以下介绍两种常用的

如何在iOS 17中利用预测性自动更正功能 如何在iOS 17中利用预测性自动更正功能 Sep 17, 2023 pm 03:37 PM

由于改进的机器学习技术,iOS17中的Apple在iPhone中键入文本时使自动更正变得更加有用。苹果表示,它采用了一种“变形器语言模型”,可以更好地为个人用户个性化自动更正,学习你的个人偏好和单词选择,以便在打字时更有用。使用iOS17几周后,您应该注意到自动更正建议可以更好地预测您想说的内容并显示单词供您点击以自动填充。当您使用首字母缩略词、缩短词、俚语和口语时,自动更正与自动更正不那么激进,但它仍然能够更正意外的拼写错误。更正自动更正当自动更正更改单词时,更正的单词下方将显示一条蓝线。您可

使用Python计算字符串中单词的长度 使用Python计算字符串中单词的长度 Sep 13, 2023 am 11:29 AM

使用Python查找给定输入字符串中各个单词的长度是必须解决的问题。我们想要计算文本输入中每个单词的字符数,并以结构化样式(如列表)显示结果。该任务需要分解输入字符串并分隔每个单词。然后根据其中的字符数计算每个单词的长度。基本目标是创建一个可以有效接收输入、确定字长并及时输出结果的函数或过程。在文本处理、自然语言处理和数据分析等多种应用中,字长统计可以提供有洞察力的信息并实现额外的分析,解决这个问题至关重要。使用的方法使用循环和split()函数将map()函数与len和split()一起使用使

如何使用PHP中的array_reverse函数反转数组键值顺序 如何使用PHP中的array_reverse函数反转数组键值顺序 Jun 26, 2023 pm 01:35 PM

在PHP程序设计当中,数组是一个非常常用的数据结构,通过键值对的形式,我们可以方便地访问和处理数据。然而,在某些情况下,我们需要反转数组键值的顺序,以达到更好的数据处理效果。PHP中提供了一个专门的函数,即array_reverse函数,可以非常方便地实现数组反转。接下来,本文将向读者介绍如何使用PHP中的array_reverse函数反转数组键值的顺序。一

See all articles