一:题目


二:上码

class Solution {public://利用双指针使除去多余的空格,定义快慢指针,最后满指针指向的位置就是除去冗余空格后的字符串//大小void removespacing(string& s){int slowIndex = 0,fastIndex = 0;//去掉字符串前面的字符while(s.size() > 0 && fastIndex < s.size() && s[fastIndex] == ' ') {fastIndex++;}for(; fastIndex < s.size(); fastIndex++) {//这里是处理中间多余的空格 比如两个空格挨着一块,那么我们就得选择去掉一个if(fastIndex - 1 > 0 && s[fastIndex - 1] == s[fastIndex] && s[fastIndex] == ' '){continue;}else{s[slowIndex] = s[fastIndex];slowIndex++;}}if(slowIndex - 1 > 0 && s[slowIndex-1] == ' '){ //如果最后一个字符是空格s.resize(slowIndex-1);}else{s.resize(slowIndex);//这里的的size()数值上是比字符数多一个}}//将整个字符串反转void reverseStr(string& s,int start,int end){for(int i = start,j = end; i < j; i++,j--) {swap(s[i],s[j]);}}string reverseWords(string s) {/**思路:1.移除字符串中多余的空格(多余的空格指的是 字符串前面 字符串中间 字符串后面)2.将整个字符串反转3.将每个单词反转*/removespacing(s);reverseStr(s,0,s.size()-1);for(int i = 0; i < s.size(); i++){int j = i;while(j < s.size() && s[j] != ' '){j++;}reverseStr(s,i,j-1);i = j;//为下一个单词做准备}return s;}
};


这个题可以复习前面刷数组的时候的快慢指针 还可以复习昨天学的反转字符串

151. 翻转字符串里的单词(思路+详解)相关推荐

  1. 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符

    一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...

  2. 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

    一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...

  3. 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列

    72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...

  4. [leetcode]151.翻转字符串里的单词

    给你一个字符串 s ,逐个翻转字符串中的所有 单词 . 单词 是由非空格字符组成的字符串.s 中使用至少一个空格将字符串中的 单词 分隔开. 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串. ...

  5. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

  6. leetcode 151. 翻转字符串里的单词

    难度:中等 频次:69 题目: 给你一个字符串 s ,逐个翻转字符串中的所有 单词 . 单词 是由非空格字符组成的字符串.s 中使用至少一个空格将字符串中的 单词 分隔开. 请你返回一个翻转 s 中单 ...

  7. 力扣151. 翻转字符串里的单词

    给你一个字符串 s ,逐个翻转字符串中的所有 单词 . 单词 是由非空格字符组成的字符串.s 中使用至少一个空格将字符串中的 单词 分隔开. 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串. ...

  8. leetcode 151. 翻转字符串里的单词 c代码 三种方案

    如题: 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the"示例 2: ...

  9. LeetCode 151. 翻转字符串里的单词(栈)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1:输入: "the sky is blue" 输出: "blu ...

最新文章

  1. 作为程序员,要取得非凡成就需要记住的15件事。
  2. mysql中 group_concat长度限制
  3. CSS滤镜(Filters)
  4. nginx php fpm 连接数,哪个php5-fpm设置为高并发连接数nginx
  5. Shell入门(四)之数组
  6. fck2.6.3配置
  7. UWP 共享文件——接收者
  8. Vijos 1006
  9. python之类和对象
  10. PHP的时间增加10分钟和加一天的时间
  11. QoS 基础: 什么是QoS, 我真的需要吗?
  12. 2、孟子·公孙丑上 孟子·公孙丑下
  13. nginx新增conf文件
  14. 移动开发之我见 ——移动WEB
  15. 【图的存储】邻接多重表
  16. NEO从源码分析看数字资产
  17. Android 11 安装EdXposed + Magisk框架
  18. 论文阅读 End-to-End Multi-View Fusion for 3D Object Detection in Lidar Point Clouds
  19. 利用Gauss-Legendre 5点通用公式计算线路中边桩坐标并计算放样数据
  20. 电子海报怎么制作?分享一个好用的技巧

热门文章

  1. TFS2015的CI集成
  2. 使用Filezilla 与 linux远程服务器传输文件时,设置默认打开编辑器
  3. C语言试题十七之用来求数组的最大元素在数组中的下标并存放在k所指的储存单元中
  4. sql drop 简单操作(Mysql)
  5. python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)
  6. 华为ar2200路由器 策略路由_路由交换篇 06 华为路由器RIP协议的配置
  7. python测试之道pdf百度云_Python测试之道——笔记1
  8. 有生之年必看!千古第一奇书《山海经》到底是怎样的一本书?
  9. 不当败家子的原因......
  10. 百万大奖参赛攻略 | 让程序员走向财富自由