反转字符串里的单词

4、反转字符串里的单词

给定一个字符串,逐个反转字符串中的单词

示例1:

输入: "the sky is blue",
输出: "blue is sky the".

说明:

无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

进阶:

请选用C语言的用户尝试使用 O(1) 空间复杂度的原地解法。

Solution

class Solution {
public:void reverseWords(string &s) {string res;string str;int isWord=0;int wordSize=0;for(int i=s.size()-1;i>=0;i--){if(s[i]==' '){if(isWord){isWord=0;if(res.size()>0){res+=' ';}str=s.substr(i+1,wordSize);res+=str;wordSize=0;}elsecontinue;}else{if(isWord){wordSize++;if(i==0){if(res.size()>0)res+=' ';str=s.substr(0,wordSize);res+=str;}}else{isWord=1;wordSize++;if(i==0){if(res.size()>0)res+=' ';str=s.substr(0,wordSize);res+=str;}}}}s=res;}
};

思路:

主要的思路就是,用isWord标记当前字符是否是一个单词。然后取出该单词,放到结果中,值得注意的是当字符串为只有一个字符的字符串时的情况。代码看上去非常臃肿,但是速度上还是令人满吃惊的,超过了99.98%的提交。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正整数

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid84077#problem/A 题目: Description A magic island Geraldion, where Gerald lives, has its own currency system. It uses banknotes of several values. But the problem is, the s…

360 webscan中防注入跨站攻击的核心

//get拦截规则 $getfilter "\\<.javascript:window\\[.{1}\\\\x|<.*(&#\\d?;?)?>|<.*(data|src)data:text\\/html.*>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\(|benchmark\s*?\\(\d?|sleep\s*?\\([\d\.]?\\)|load_file\s*?\\()|<[…

POJ 2115 C Looooops(扩展欧几里得)

辗转相除法&#xff08;欧几里得算法&#xff09; 时间复杂度&#xff1a;在O(logmax(a, b))以内 int gcd(int a, int b) {if (b 0) return a;return gcd(b, a % b); }扩展欧几里得算法 时间复杂度和欧几里得算法相同 int extgcd(int a, int b, int& x, int& y) {int …

分支管理(转载)

转自&#xff1a;http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743862006503a1c5bf5a783434581661a3cc2084efa000 分支就是科幻电影里面的平行宇宙&#xff0c;当你正在电脑前努力学习Git的时候&#xff0c;另一个你正在另一个平行…

匹配括号

输入&#xff1a; 仅包含{,},(,),[,]的字符串输出&#xff1a; 如果括号匹配输出&#xff1a;YES 否则输出&#xff1a;NOSolution&#xff1a; #include<iostream> #include<string> #include<stack> using namespace std;bool check(const string&)…

总线接口与计算机通信

微机中总线一般有内部总线、系统总线和外部总线。 内部总线是微机内部各外围芯片与处理器之间的总线&#xff0c;用于芯片一级的互连&#xff1b; 系统总线是微机中各插件板与系统板之间的总线&#xff0c;用于插件板一级的互连&#xff1b; 外部总线则是微机和外部设备之间的总…

uva 12442 . Forwarding Emails

“... so forward this to ten other people, to prove that you believe the emperor has new clothes.”Aren’t those sorts of emails annoying?Martians get those sorts of emails too, but they have an innovative way of dealing with them.Instead of just forwardi…

大数相加

输入&#xff1a; 两个用字符串表示的大整数 如a1111111111111,b222222222222222 输出&#xff1a; 两个数的和 Solution&#xff1a; #include<iostream> #include<algorithm> #include<string>using namespace std;int add(const char&,const char&…

Linux的进程与服务(一)

启动的配置文件/etc/inittab&#xff0c;修改完配置文件以后 init q立即生效 # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not h…

Linux 修改swap虚拟内存大小

swap是内存的交换区&#xff1b;换句话说&#xff0c;如果内存不够用了&#xff0c;那么系统会在硬盘上存储一些内存中不常用的数据&#xff0c;之后将这部分数据在存储中析构掉&#xff1b;这样内存就又有剩余空间可以运行东东啦&#xff0c;这个过程也就是所谓的交换&#xf…

统计文章中的单词

输入&#xff1a; 字符串&#xff0c;其中可能包含空格&#xff0c;TAB&#xff0c;回车等&#xff0c;规定&#xff0c;仅字母数字和单引号算作单词部分 输出&#xff1a; 单词的个数 Solution&#xff1a; #include<iostream> #include<string>using namespac…

迈向世界 拓展未来

一切都会过去&#xff0c;只有真理永存&#xff0c;只有愿意越过事实前进一步的人&#xff0c;才能理解事实&#xff0c;这就是科学。时代在发展&#xff0c;科技更是日新月异彻底改变着我们的生活方式。现在的我们就是跟着科技发展的脚步&#xff0c;奔着梦想&#xff0c;一直…

JS - 跳转页面

<!-- 第一种&#xff1a; --><script type"text/javascript">window.location.href "login.jsp?backurl" window.location.href;</script><!-- 第二种&#xff1a; --><script type"text/javascript"&g…

分享一个用安卓手机就能引导pc安装linux系统办法

1、首先安卓手机下载软件DriveDroid.apk http://pan.baidu.com/s/1qW4pbT6 2、下载linux镜像文件放手机存储卡存储&#xff0c;放到Download/images/以下 3、打开软件会自己主动读取这个目录以下镜像&#xff0c;也能够在软件里面下载须要的镜像文件 4、软件设置usb连接模式 5、…

SharePoint 2013 开发——其他社交功能

博客地址&#xff1a;http://blog.csdn.net/FoxDave上一篇讲了如何获取用户配置文件的相关属性&#xff0c;它属于SharePoint 2013社交功能的一个小的构成部分。社交功能是SharePoint 2013改进的一大亮点。可以在现有网站上开启社交功能或者新建一个专门用于社交用途的社区网站…

第一个Qt+opencv程序

简单安装好Qt和编译安装好opencv后&#xff0c;简单实现第一个Qtopencv程序&#xff1a;读取并显示一张图片&#xff0c;这里我的Qt版本时5.9.1&#xff0c;opencv版本是4.0.1&#xff0c;版本的影响不大。 首先我们用Qt创建一个控制台项目&#xff0c;即在创建项目时选择Qt C…

redis学习笔记——应用场景

最近在看redis入门指南&#xff0c;现在就自己的学习情况说说自己的理解。 字符串类型&#xff08;String&#xff09; 字符串类型是Redis中最基本的类型&#xff0c;能存储任意形式的字符串&#xff0c;包括二进制数据。如一张照片也可以用字符串类型存储。注意字符串类型键允…

Unity的Cover flow的实现包(2个)

苹果的mac机上预览图片&#xff0c;有一个所谓的cover flow的效果&#xff0c;这里收集到两个&#xff0c;两个实现效果略有不同。 1、老外的实现 https://github.com/rakkarage/Unity3D-CoverFlow 这个焦点图片在到最后位置前会模拟一个抖动效果 2、国人的实现 http://game.ce…

卸载全部appx应用(包括应用商店)

在PowerShell中粘贴&#xff1a; Get-AppXPackage | Remove-AppxPackage 转载于:https://www.cnblogs.com/Bob-wei/p/4691854.html

求两个整数数组乘积最小值

输入&#xff1a; 三行&#xff1a; 第一行&#xff1a;n&#xff0c;表示数组的个数 第二行&#xff1a;数组a各个元素的值 第三行&#xff1a;数组b各个元素的值输出&#xff1a; 式子&#xff1a;a[0]*b[0]a[1]*b[1]...a[n-1]*b[n-1];的最小值 其中数组a中元素顺序可以调整…