给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

输入: "the sky is blue"
输出: "blue is sky the"
示例 2:

输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:

输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

思路:以空格为界限把字符串拆成字符串数组

数组中会有以下几种情况

1. 出现单词而无空格,->将单词连接到结果字符串中

2. 出现单词及空格,->去掉空格,再将单词连接到结果字符串中

3. 只有空格,->去掉空格之后,它为空,不用管了

提交的代码:

class Solution {

public String reverseWords(String s) {

String emptyStr=" ";

final String[] s1 = s.trim().split(emptyStr);

StringBuilder sb=new StringBuilder();

for (int i = s1.length - 1; i >= 0; i--) {

String str=s1[i];

while (str.contains(emptyStr)){

str=str.replaceAll(emptyStr,"");

}

if ("".equals(str)){

continue;

}

sb.append(str);

if (i!=0){

sb.append(emptyStr);

}

}

return sb.toString();

}

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. LeetCode 186. 翻转字符串里的单词 II

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串,逐个翻转字符串中的每个单词. 示例: 输入: ["t","h","e",&qu ...

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

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

最新文章

  1. Js面试题(一)--js实现数组去重怎么实现?
  2. python 关键字 及代码
  3. 公益:开放一台Nacos服务端给各位Spring Cloud爱好者
  4. 使用Hibernate操作数据库
  5. postmapping注解_Swagger常用注解
  6. getresourceasstream方法_【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】...
  7. MySql 查询显示
  8. c++向量和数组的区别_Spark机器学习-Java版(一)-向量和矩阵
  9. read 系统调用剖析【转】
  10. 美图2019年财报发布:“高级订阅”收入亮眼 成为重要商业模式
  11. prim算法适用条件_内部排序算法的比较及应用
  12. 蓝桥杯 算法提高 队列操作
  13. InnerJoin分页导致的数据重复问题排查
  14. 一个500强公司的数据化运营管理实践 1
  15. 不加群提取群成员_快速提取PPT上的文字!
  16. angularJS入门与进阶(笔记1)
  17. 多边形(polygon)
  18. 逆势马丁网格策略交易演示
  19. 一文详解脏读、不可重复读、幻读
  20. 敏感词过滤 - DFA算法[确定有穷自动机]的Java 实现

热门文章

  1. LeetCode 621. 任务调度器(贪心)
  2. LeetCode 421. 数组中两个数的最大异或值(Trie树)
  3. 关于二叉树的程序 c语言,请教关于建立二叉树程序(c语言的)
  4. hbase的2.2.4版本支持哪个版本的hadoop_Hadoop 2.7 不停服升级到 3.2 在滴滴的实践
  5. python远程调用摄像头_Python设置Socket代理及实现远程摄像头控制的例子
  6. python中的文件读取注意事项
  7. java非必填字段跳过校验,avalon2表单验证,非必填字段在不填写的时候不能通过验证...
  8. SQL基础知识:DDL、DML、DQL
  9. 消失了一周的小夕在玩什么啦?
  10. React Native在美团外卖客户端的实践