LeetCode《剑指Offer》面试题58 - I. 翻转单词顺序

题目描述
题目描述
可能用到的知识点:字符串(分割、裁剪、拼接)、正则表达式、StringBuilder
大体思路:按空格来分割字符串,只保留单词,再将这些单词拼接起来,最后用trim()删除头尾空白,来满足输出控制。
需要注意的是:
①题目说明了两个单词间可能有多余的空格,反转后的只能有一个,也就是说“good example”分割出来我们只想要“good”和“example”两个单词,可以用正则表达式s.split(" +")实现,表示一次或多次匹配空格
②前两次的成功提交都用的String res来保存最后的结果,执行用时太长,查资料后知道了进行多次字符串拼接时,StringBuilder比String更高效
三次成功提交截图:
在这里插入图片描述
在这里插入图片描述
第3次提交执行用时分布图表:
在这里插入图片描述
代码如下:

class Solution {
    public String reverseWords(String s) {
      String[] sentence = s.split(" +");//正则表达式,一次或多次匹配
      //String res = "";
      StringBuilder sb = new StringBuilder();//进行多次字符串拼接时,StringBuilder比String更高效
      String str = "";
      for(int i = sentence.length-1; i >= 0; i--){
          //System.out.println(str);
          str = sentence[i];
          //res += " " + str;
          sb.append(" ").append(str);
      }
      return sb.toString().trim();//trim()删除头尾空白
    }
}

写在最后(留个Flag督促自己):
最近一直看着研二的师兄师姐参加2020春招,自己也去牛客网和一些宝藏公众号看了很多的面经,原本规划自己能在35之前去的了一二线的互联网公司就达成在事业上的目标了,但是真的去看了真实面试题才发现校招已经是我们和大厂距离最近的时候了(虽然还差着十万八千里,但是社招时我和大厂的差距怕是孙悟空都得翻好几个跟头),因而想在2020全面的提升自己,年底再来看看这篇文章,看看那时的自己会与现在有何不同,是否达到了自己的期望。买了左程云前辈的《程序源代码面试指南》,已经在路上了,今后会按书中的分类去leetcode上跟着刷题写题解,当对某部分的理解有了实质性的进步就写一篇算法博客,毕竟提高自己的算法能力光说说没用;计算机基础知识会看“帅地玩编程”,一定一定要坚持下去啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值