题目来源

《编程之法》 第一章 举一反三 习题

题目描述

输入一个英文句子,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,若输入“I am a student.” 则输出“student. a am I”;

注意:句子中可能出现连续多个空格如“ I am a student.” 此时翻转结果需要一致,即只有一个空格

思路

三步翻转法的退化版

自身翻转“I am a student.” 翻转为“I ma a .tneduts”

全部翻转“I ma a .tneduts”翻转为“student. a am I”

实现

class Solution {

public:

string pre_process(string &s) {

string result = "";

int len = s.length();

int head_no_blank = 0;

int tail_no_blank = len - 1;

//remove the head blankspace

while(s[head_no_blank++] == ' ');

//remove the tail blankspace

while(s[tail_no_blank--] == ' ');

//remove the middle blankspace

for (int i = head_no_blank; i <= tail_no_blank; i++) {

if (s[i] == ' '){

result.push_back(' ');

while (s[++i]==' ');

i--;

}else{

result.push_back(s[i]);

}

}

return result;

}

void reversestring(string &s, int start,int end) {

if (start >= s.length()) return;

while (start < end) {

swap(s[start],s[end]);

start ++;

end --;

}

}

string reverseWords(string s) {

s = pre_process(s);

int start = 0;

int len = s.length();

//reverse every word

for (int i = 0; i < len; i++) {

if (s[i] == ' '){

reversestring(s,start,i-1);

start = i + 1;

}

}

//reverse the last one

reversestring(s,start,len - 1);

//reverse all

reversestring(s,0,len-1);

return s;

}

};

int main(){

std::cout<

return 0;

}

java 翻转单词_单词翻转 - SegmentFault 思否相关推荐

  1. java表驱动法索引访问_表驱动法 - SegmentFault 思否

    在我们平时的开发中,if else是最常用的条件判断语句.在一些简单的场景下,if else用起来很爽,但是在稍微复杂一点儿的逻辑中,大量的if else就会让别人看的一脸蒙逼. 如果别人要修改或者新 ...

  2. java大麦_大麦大 - SegmentFault 思否

    通过这个教程,我想告诉你在 React 中如何使用 state 和 effect 这两种 hooks 去请求数据.我们将使用众所周知的 Hacker News API 来获取一些热门文章.你将定义属于 ...

  3. java - websocket配合spring-security使用token认证_个人文章 - SegmentFault 思否

    使用框架介绍 spring boot 1.4.3.RELEASE spring websocket 4.3.5.RELEASE spring security 4.1.3.RELEASE sockjs ...

  4. python之父去面试-面试题_个人文章 - SegmentFault 思否

    1 Spring Bean是什么? 在spring中由Spring创建和管理的对象称为bean, bean有相关的特性,例如懒加载,作用域,生命周期这些. 懒加载就是延迟加载,启动的时候,会创建所有对 ...

  5. python页面转图片_网页转图片_技术分享 - SegmentFault 思否

    将一段文字转成图片,比如常用的长微博工具 这里用 PHP 来处理. text2pic composer require dsgygb/text2pic touch test.php require ' ...

  6. node.js - Nodejs 分布式事务_个人文章 - SegmentFault 思否

    事务是恢复和并发控制的基本单位,保证 ACID:原子性.一致性.隔离性.持久性. 对于全是异步的 Nodejs 而言, 并不适合做事务操作: 代码书写上: try ... catch ... 是写给人 ...

  7. python质因子分解_质因子分解_个人文章 - SegmentFault 思否

    质因子分解的问题就是给定一个n使得n能够分解为多个因子的乘积形式,并且相同因子用指数形式表示: 例如180=2^23^25; 对于这个问题,很好理解,我们的目的就是寻找其因子,通常的方法也就是从0开始 ...

  8. java9 gc log参数迁移_个人文章 - SegmentFault 思否

    序 本文主要研究一下java9 gc log参数的迁移. 统一JVM及GC的Logging java9引进了一个统一的日志框架,对gc log的输出进行了统一的配置. 相关JEP(JDK Enhanc ...

  9. 网易云信入选《SegmentFault 思否 2019 中国技术品牌影响力企业榜单》!

    近日,SegmentFault 思否作为中国最大的新一代开发者社区,依托数百万开发者用户行为数据,及科技企业技术品牌在国内市场的大数据分析,评选出 30 家在开发者领域最具影响力的科技企业,权威发布& ...

  10. 极客广州——EOS Asia郭达峰担任SegmentFault思否黑客马拉松技术顾问

    近日备受关注的 EOS 投票率超过 15%,主网激活,已正式上线.EOS Asia 联合创始人郭达峰将担任 SegmentFault 思否区块链黑客马拉松广州站技术顾问,为大赛项目提供技术咨询支持.届 ...

最新文章

  1. 纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?
  2. PHPer常见的面试题总结
  3. 算法 有两个相同大小数组均已按升序排列好 编程计算这两个数组的中位数 C
  4. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波15 - 锐化高通滤波器 -拉普拉斯核(二阶导数)
  5. Zookeeper集群为什么要是单数
  6. 选项类 oracle ebs,Oracle EBS 打3类补丁主要步骤
  7. (72)Verilog HDL系统函数和任务:$display
  8. zabbix 搭建 mysql 连接报错
  9. mysql打开慢查询_MySQL 开启慢查询日志的方法
  10. 防止被偷窥和修改 Office文档保护秘笈
  11. 让你无法拒绝的数学之美,美的完美无瑕
  12. 移动端border-radius绘制圆点不圆
  13. html+css学习第六天(背景图片、精灵图片、元素内容溢出、长度单位)
  14. 《左耳听风》-ARTS-打卡记录-第十四周
  15. 今天是值得纪念的一天!
  16. 专题·网络流【资源集合
  17. 安装VMware-tools出现initctl: Job failed to start
  18. 我的世界java边境之地_我的世界:前往边境之地的9个“诡异”现象!阳光也会被吞噬?...
  19. 全国产品经理认证NPDP哪里比较不错?
  20. 0035-量化第六天:QMT—板块收益排序后选取收益最高成分股

热门文章

  1. 42个激发灵感、漂亮的登陆页面设计
  2. 调试并修理垂起固定翼(VTOL)
  3. Python-Scapy使用介绍
  4. JAVA实习笔试面试(1)
  5. 交换机怎么用计算机配置,巧妙配置 用交换机控制网络(一) -电脑资料
  6. 测试用例管理工具(testlinkexcel)之二
  7. AUTOCAD——修剪命令、延伸命令
  8. python概率游戏_来自G胖的微笑:使用python监督学习预测Steam游戏打折的概率
  9. java 二元一次方程式_【java】用户输入二元一次方程的三个系数,计算机求解二元一次方程。...
  10. g楦和h楦的区别_赛事丨“双驰杯”福建鞋类设计师职业技能竞赛暨全国鞋类设计师技能竞赛 福建分赛区选拔赛理论题库(第二部分)...