可能用到的知识点:字符串(分割、裁剪、拼接)、正则表达式、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上跟着刷题写题解,当对某部分的理解有了实质性的进步就写一篇算法博客,毕竟提高自己的算法能力光说说没用;计算机基础知识会看“帅地玩编程”,一定一定要坚持下去啊!