LeetCode 557、给定一个字符串,你需要颠倒一个句子中每个单词中的字符顺序,同时保留空格和初始单词顺序。

class Solution {public String reverseWords(String s) {String StringSplits[] = s.split(" ");StringBuilder result=new StringBuilder();for (int i = 0; i<StringSplits.length;i++){result.append(new StringBuffer(StringSplits[i]).reverse().toString() + " ");}return result.toString().trim();}
}

记得当初学习Java课程的时候,对于String、StringBuilder、StringBuffer这三个类完全是混淆的,在这里再次回顾一下三者的区别。

  1. 运行速度  StringBuilder > StringBuffer > String。主要原因是String是字符串常量,一旦创建之后该对象就无法修改,StringBuffer与StringBuilder是字符串变量,其对象是可以修改的。老师曾经举过以下代码:

    String str="abc";
    System.out.println(str);
    str=str+"de";
    System.out.println(str);

    如果运行这段代码会发现先输出“abc”,然后又输出“abcde”,好像是str这个对象被更改了,其实,这只是一种假象罢了,JVM对于这几行代码是这样处理的,首先创建一个String对象str,并把“abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了,所以,str实际上并没有被更改,也就是前面说的String对象一旦创建之后就不可更改了。所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。

  2. 线程安全StringBuilder是线程不安全的,而StringBuffer是线程安全的。如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是使用速度比较快的StringBuilder。
  3. 总结一下
      String:适用于少量的字符串操作的情况

      StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

      StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

LeetCode 557 反转字符串中的单词 III相关推荐

  1. C#版(击败97.76%的提交) - Leetcode 557. 反转字符串中的单词 III - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...

  2. LeetCode 557. 反转字符串中的单词 III

    文章目录 1. 题目描述 2. 解题思路 3. 代码实现 1. 题目描述 题目链接:557. 反转字符串中的单词 III 2. 解题思路 此题也可以直接在原字符串上进行操作,避免额外的空间开销. 当找 ...

  3. LeetCode 557. 反转字符串中的单词 III(栈)

    文章目录 1. 题目信息 2. 解题 2.1 栈 2.2 STL reverse() 1. 题目信息 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: ...

  4. leetcode 557. 反转字符串中的单词 III(Java版)

    题目 https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/ 题解 class Solution {public String ...

  5. 557. 反转字符串中的单词 III

    557. 反转字符串中的单词 III 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例: 输入:"Let's take LeetCode cont ...

  6. 557. 反转字符串中的单词 III golang 数组和字符串反转

    题目 189.反转数组 557. 反转字符串中的单词 III 557. 反转字符串中的单词 III LeetCode链接 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初 ...

  7. Leetcode 557 反转字符串中的单词

    Leetcode 557 反转字符串中的单词 题目描述: 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例1: 输入:s = "Let's ...

  8. 【leetcode】557 反转字符串中的单词III(字符串)

    题目链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/ 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序 ...

  9. 从零单刷Leetcode(JAVA描述)—— 557. 反转字符串中的单词 III

    链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格 ...

最新文章

  1. 测试无线节能信标与主控器之间的控制功能
  2. python如何读写文件-Python之写入文件(1)
  3. 百度搜索自动提示搜索相关内容----模拟实现
  4. C语言程序设计 计算个人所得税 浙大版,《C语言及程序设计》实践参考——个人所得税计算器switch语句版...
  5. The serializable class XXX does not declare a static final serialVersionUID field of type long的警告...
  6. Oracle触发器之表新增/修改的触发操作
  7. 漫步数学分析四——集合内部
  8. 【重难点】【RabbitMQ 02】如何避免消息重复投递和消息重复消费、如何防止消息丢失、如何保证消息的顺序性、如何保证消息队列的可用性
  9. VMware-workstation安装
  10. schema.xml文件配置
  11. JEECG弹出表单调用列表刷新
  12. Oracle基础篇--01数据库控制语言DCL
  13. 使用plugins让打包更便捷
  14. windows ubuntu使用移动硬盘出现无法挂载(解决办法)
  15. 手机浏览器能上网微信无法连接服务器,手机打不开微信的网页怎么办?手机打不开微信网页的原因和解决方法...
  16. [推荐]白纸上的黑点和黑纸上的白点
  17. SQL 语句,聚沙成塔
  18. 三体归零者和盘龙鸿蒙,《三体》中归零者这样的大神级文明已经脱离黑暗森林和猜疑链了吗,为什么?...
  19. 再挤牙膏 2018年英特尔八代酷睿处理器你仍会失望
  20. matlab 工具箱 径向基,精确径向基(matlab工具箱)

热门文章

  1. Odoo----异常、错误、警告、提示、确认信息显示
  2. 找不到模块“react/jsx-runtime”或其相应的类型声明
  3. 用应用软件UCCW Widget制作出属于你独一无二的梦幻桌面吧!
  4. win10 yolov5 tensorRT 部署
  5. Revit二次开发环境平台的搭建
  6. IDEA括起选中的选中的内容
  7. 为何贩卖焦虑的文章如此受欢迎???
  8. python程序设计入门书籍推荐_python刚刚入门,接下来这几本python的书会让你成为别人眼里的大神!...
  9. English 250 common roots word
  10. 拼多多2018年校招真题