151. Reverse Words in a String (String)
思路: 本题考查的目的并不是使用字符串的函数。方法是两次reverse,先对每个单词先做一次翻转,然后对整个字符串做一次翻转。
需要注意的是去除extra space,并且对全space字符串、以及最后一个单词要做特殊处理。
class Solution {
public:
void reverseWords(string &s) {
int start = ;
int end=-;
int i = ;
int cur = ; // point to the string with extra space deleted
//ignore space at the beginning
while(i < s.length() && s[i]==' '){
i++;
}
for(;i<s.length();i++){
if(s[i]==' ' && i+ < s.length() && s[i+] ==' ') continue; //ignore extra space between words
if(s[i]==' ' && i+ == s.length()) break; //ignore final space
s[cur++] = s[i];
if(s[i]==' '){
end = cur-; //end case1: the letter before space
reverse(s, start, end);
start = cur;
}
}
end = cur-; //end case2: the last not space letter!!!
if(end == -) s = ""; //special case: null string!!!
if(s[i-] != ' '){ //reverse the last word!!!
reverse(s,start,end);
}
cout << "end=" << end << endl;
s = s.substr(, end+);
reverse(s,,end);
}
void reverse(string &s, int start, int end){
int l = start;
int r = end;
char tmp;
while(l<r){
tmp = s[l];
s[l]=s[r];
s[r]=tmp;
l++;
r--;
}
}
};
151. Reverse Words in a String (String)的更多相关文章
- leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String
557. Reverse Words in a String III 最简单的把空白之间的词反转 class Solution { public: string reverseWords(string ...
- 151 Reverse Words in a String 翻转字符串里的单词
给定一个字符串,翻转字符串中的每个单词.例如,给定 s = "the sky is blue",返回 "blue is sky the".对于C程序员:请尝试用 ...
- 入门:Java Map<String,String>遍历及修改
重点:在使用Map时注意key-value,key用于检索value的内容. 在正常情况下,可以不允许重复:在java中分为2中情况,一是内存地址重复,另一个是不同的地址但内容相等. 在使用Map是一 ...
- 关于 Dictionary<string,string>,和List<T>在View的使用
在MVC中Dictionary<string,string>如何应用到View页面中呢,例: <input type="text" name=key value= ...
- alibaba fastjson List<Map<String, String>>2Str
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; impo ...
- getParameterMap()的返回值为Map<String, String[]>,从其中取得请求参数转为Map<String, String>的方法如下:
直接遍历报错:[Ljava.lang.String;@44739f3f Map<String, String> tempMap = new HashMap<String, Strin ...
- The constructor User.Student(String, String, String) is not visible
项目:蒙文词语检索 日期:2016-05-01 提示:The constructor User.Student(String, String, String) is not visible 出处:Db ...
- 从为什么String=String谈到StringBuilder和StringBuffer
前言 有这么一段代码: public class TestMain { public static void main(String[] args) { String str0 = "123 ...
- 1,字符是否为空,2,比较两个字符大小。String.Compare(String, String)。string.IsNullOrEmpty(string)
1, String.Compare 方法 (String, String) 比较两个指定的 String 对象. 值 条件 小于零 strA 小于 strB. 零 strA 等于 strB. 大于零 ...
- ERROR: “System.Web.Mvc.Controller.File(string, string, string)”是一个“方法”
ERROR: “System.Web.Mvc.Controller.File(string, string, string)”是一个“方法”,这在给定的上下文中无效 这是一个与Controller.F ...
随机推荐
- awk的用法
awk是什么 awk是一种优良的文本处理工具,同时也是一种脚本语言.awk的三位作者者已将它正式定义为“样式扫描和处理语言”.awk脚本允许您创建简短的程序,这些程序读取输入文件.为数据排序.处理数据 ...
- Netty socket.io 启用Epoll 模式异常
Epoll 环境为Linux 内核2.6 以上版本 Windows下不能启动 1:判断Linux环境 public static boolean isOSLinux() { Properties p ...
- mui集成百度ECharts的统计图表以及清空释放图表
echarts官网地址: http://echarts.baidu.com/index.html 更换主题颜色: // 图表清空------------------- mychart.clear(); ...
- OC代码编译成c++代码 编译器命令
xcrun -sdk iphoneos clang -arch x86_64 -rewrite-objc Person+Test.m clang -rewrite-objc -fobjc-arc -s ...
- JS基础一-入门知识
一.什么是JavaScript JavaScript是一种基于对象和事件驱动并具有安全性能的解释性脚本语言.JavaScript不需要编译,直接嵌入在HTTP页面中,把静态页面转变成支持用户交互并响应 ...
- uml用例关系
关联关系 关联关系是指执行者与用例之间的关系,又称为通信关系,如果某个执行者可以对某个用例进行操作,它们之间就具有关联关系,如下图所示,“经理”有一个功能为“查看库存报表”,因此可以在执行者“经理”和 ...
- jenkins+docker+docker-compose完整发版流程
首先搭建jenkins+maven+nexus这一套自动化打包工具,并配置好相应配置,这里就不再赘述了. 其次,搭建好docker集群和私有仓库,以及安装好docker-compose工具,配置好相应 ...
- How ASP.NET MVC Works ? (Artech)
一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”MV ...
- MIME sniffing攻击
基于IE的MIME sniffing功能的跨站点脚本攻击 IE有一个特性,那就是在将一个文件展示给用户之前会首先检查文件的类型,这乍看起来并没什么问题,但实际上这是相当危险的,因为这会允许IE执行图片 ...
- c++之enum的好处与 define 的区别
转载自 https://blog.csdn.net/zhh464626057/article/details/41038933 什么时候需要用到enum呢?就是变量的数值在几个范围之间.red,blu ...