消除字符串中的多余空格



class Solution {public static String reverseWords(String s) {if (s == null) return "";char[] chars = s.toCharArray();// 消除多余的空格// 字符串最终的有效长度int len = 0;// 当前用来存放字符的位置int cur = 0;// 前一个字符是否为空格字符boolean space = true;for (int i = 0; i < chars.length; i++) {if (chars[i] != ' ') { // chars[i]是非空格字符chars[cur++] = chars[i];space = false;} else if (space == false) { // chars[i]是空格字符,chars[i - 1]是非空格字符chars[cur++] = ' ';space = true;}}len = space ? (cur - 1) :cur;if (len <= 0) return "";// 对整一个有效字符串进行逆序reverse(chars, 0, len);// 对每一个单词进行逆序// 前一个空格字符的位置(有-1位置有个假想的哨兵,就是一个假想的空格字符)int prevSapceIdx = -1;for (int i = 0; i < len; i++) {if (chars[i] != ' ') continue;// i是空格字符的位置reverse(chars, prevSapceIdx + 1, i);prevSapceIdx = i;}// 翻转最后一个单词reverse(chars, prevSapceIdx + 1, len);return new String(chars, 0, len);}/*** 将[li, ri)范围内的字符串进行逆序*/private static void reverse(char[] chars, int li, int ri) {ri--;while (li < ri) {char tmp = chars[li];chars[li] = chars[ri];chars[ri] = tmp;li++;ri--;}}
}

151. 翻转字符串里的单词相关推荐

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

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

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

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

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

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

  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. leetcode 151. 翻转字符串里的单词 c代码 三种方案

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

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

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

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

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

最新文章

  1. OpenMP用法大全
  2. pdf转ppt怎么转换,pdf转换ppt的方法分享
  3. Developer Express 之 XtraReport如何显示设计窗体,打开已设计过的报表
  4. otc机器人氩弧焊机_轻松搞定砂光机前后连线翻转!【富全智能】全自动180度圆筒式翻板机...
  5. Boss直聘Python爬虫实战
  6. Flow 常用知识点整理
  7. 中级病案信息技术计算机基础知识要点,病案信息技术基础知识考试重点梳理(最新最全).doc...
  8. ora-01489 字符串连接的结果过长 解决方案
  9. L3-001 凑零钱 (30 分)—团体程序设计天梯赛
  10. justify-content
  11. 奔跑的小人,在屏幕上从左向右移动”的代码实现“小人在屏幕上从右向左移动” 按下键“A”,小人向左移动;按下键“D”,小人向右移动; 按下键“W”,小人向上移动;按下键“X”,小人向下移动; 通过主函数
  12. Android 替换应用内so文件避免每次都要重新打包的麻烦
  13. python中chr65_Python语句 print(chr(65))的运行结果是
  14. 文字前带小点点的样式代码
  15. win10,没有内置录音机,如何解决
  16. 【20220207】【信号处理】三次样条插值原理详解
  17. 怎么在百度地图上标注公司地址
  18. 【C++】绘制一个登录窗口
  19. 深度学习的员工离职预测
  20. python语言提供的三个基本数字类型_python 基础知识第3讲:基本数据类型

热门文章

  1. Centos 配置mailx使用外部smtp发送邮件
  2. 数据挖掘介绍以及模型参数详解
  3. 【操作系统】实验二 作业调度模拟程序
  4. Stust2的拦截器的运行流程及使用方法、注意事项
  5. 只有程序员才有的十大烦恼
  6. 辛苦了一个下午和晚上,给Blog换了个新皮肤
  7. SVG脚本编程简介(转)
  8. 技术团队的情绪与效率
  9. mysql uuid 性能_mysql InnoDB UUID 主键 性能优化【性能分析篇】.md
  10. unicone 字体 规范