剑指offer——面试题42-2:翻转单词顺序

20180906整理

Solution1:

自己想的垃圾算法
对于c++中的string对象,substr()和erase()函数都是很常用的,常见用法必须熟练掌握!

class Solution {
public:string ReverseSentence(string str) {string str_copy = str, temp, result;stack<string> res; //对字符串从前向后进行切割,用栈存储,实现逆序输出while(str_copy.find(' ') != string::npos){temp = str_copy.substr(0,str_copy.find_first_of(' '));res.push(temp);str_copy.erase(0, str_copy.find_first_of(' ') + 1);}res.push(str_copy);while(res.size() > 1) {result += res.top();result += ' ';res.pop();}result += res.top();return result;}
};

Solution2:

这应该是书上的思路了。。

class Solution {public:string ReverseSentence(string str) {if (str.size() <= 1) return str;if (str.find_first_of(' ') == string::npos) return str;reverse(str.begin(), str.end());int slow = 0, fast = 0;for (int i = 0; i < str.size(); ) {int j = i;while (j + 1 < str.size() && str[j + 1] != ' ')j++;my_swap(str, i, j);if (j + 2 < str.size())i = j + 2;else break;}return str;}private:void my_swap(string &str, int start, int end) {int left = start, right = end;while (left < right) {char tmp = str[left];str[left] = str[right];str[right] = tmp;left++; right--;}return;}
};

剑指offer——面试题42-2:翻转单词顺序相关推荐

  1. [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串

    面试题42:翻转单词顺序 VS左旋转字符串 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...

  2. 剑指offer面试题58 - I. 翻转单词顺序(双指针)

    题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student. ",则输出&quo ...

  3. java翻转单词顺序split_剑指offer解题报告(Java版)——翻转单词顺序 左旋字符串 42...

    引言 这种翻转的问题会遇到很多,其实就是一个倒序的问题,对于第一个题只是想翻转单词的顺序,而并不想把整个字符串翻转了,如果完全翻转的话,比如I am a student.中所有字符翻转得到.tnedu ...

  4. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面

    剑指offer--面试题14:调整数组顺序使奇数位于偶数前面 Solution1: 顺序交换,比较好的算法!!! class Solution { public:void reOrderArray(v ...

  5. 剑指offer系列(44)翻转单词顺序列

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"st ...

  6. 剑指offer面试题[42]-反转单词顺序VS左旋转字符串

    题目1: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=&quo ...

  7. 剑指offer面试题42. 连续子数组的最大和(动态规划)

    题目描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 思路 详见链接 代码 class Solution: ...

  8. 剑指offer Java题解之JZ73 翻转单词序列

    题目: 例如,"nowcoder. a am I".后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是"I am a nowcoder.". 示例 ...

  9. 剑指offer面试题(41-50)——java实现

    面试题整理(自用) 面试题41:和为s的两个数字&和为s的连续整数序列 面试题42:翻转单词顺序&左旋转字符串 面试题43:n个骰子的点数 面试题44:扑克牌的顺子 面试题45:圆圈中 ...

最新文章

  1. [linux基础学习]文件和目录属性
  2. 分布式事务最终一致看这篇“大白话”的实践
  3. Hibernate教程– ULTIMATE指南(PDF下载)
  4. Tomcat架构与原理
  5. php程序里的configini_程序员手册 修改php.ini的几种方法
  6. HihoCoder-1174拓扑排序
  7. 机器闹乌龙?Amphetamine 险遭苹果下架
  8. CF-697B Barnicle与691C Exponential notation
  9. java使用重绘实现拖动_【Android】利用自己定义View的重绘实现拖动移动,获取组件的尺寸...
  10. 实现平衡二叉排序树的各种算法(包括二叉树的递归遍历、非递归遍历)
  11. 感人至深:40岁博士毕业,新任安徽省长王清宪的博士论文后记
  12. 这九年来都在干嘛-兄弟连IT教育
  13. Navicat for my sql 数据结构导出(制作数据字典)
  14. 【程序源代码】微信小程序开发视频(2021年最新版本)
  15. nrf52840 内部 flash 结构
  16. virtual box 静态ip设置
  17. 机器视觉(四)——打光
  18. 电邮里面是图片怎么下载_这是最有效的采访后谢谢您的电子邮件
  19. 【社媒营销】四大跨境营销渠道分析
  20. Electron flash插件

热门文章

  1. 【ROS学习笔记】(六)客户端Client的编程实现
  2. 在计算机结构的简化模型中,2.4 计算机结构的简化模型
  3. python3怎么安装opencv_Python:即使安装了opencv,也无法导入cv2(如何为python3安装opencv3)...
  4. windos 服务怎么写_我的产品或服务怎么写?
  5. bat执行php语句,php与bat之间调用的方法
  6. Ubuntu18.04安装OpenCV4.3.0和环境配置(支持编译CUDA并安装配置python-opencv)
  7. Python中的numpy.square()
  8. easymock_EasyMock TestNG示例
  9. python迭代器_Python迭代器
  10. 响应式开发---网页的布局方式、媒体查询、栅格化布局、less语言