151 反转字符串里的单词

                                                                                                                                      点击此处返回总目录

 

【题目】

151 反转字符串里的单词

151 反转字符串里的单词

 

【方法一】

从:"the sky is blue"

得:"blue is sky the"

就是把原始字符串s进行切分为:"the"、"sky"、"is"和"blue"。然后从后往前拼接得到。

按照空格分开可以借助split()函数实现。用多个空格分开可以写为split(" +")或者split("\\s+")。加号表示一个或多个的意思。

 

 

代码:

151 反转字符串里的单词

 

结果:

151 反转字符串里的单词

 

代码简单是简单,但是慢。。。超级慢。。。

 

【方法一:改进】

为什么这么慢呢?是因为里面有很多ss=ss+st[i]的操作。String类型是不可变的,来回赋值需要花费很多时间倒腾数据。所以可以改成StringBuffer或者StringBuilder来做。

 

改进后代码:

151 反转字符串里的单词

 

结果:

151 反转字符串里的单词

 

结果明显快了很多。

 

【方法一:继续改进】

对比了一下其他人的方法,发现split("\\s+")这个操作比较慢。不如改成split(" "),然后再在后面判断是否等于""高效。

split(" ")方法可能产生个"",所以后面需要判断。判断的时候不能用"==",要用queals()函数。

 

代码:

151 反转字符串里的单词

 

结果:

 

151 反转字符串里的单词

 

 

 

【方法二】

从:"the sky is blue"

得:"blue is sky the"

可以通过反转的方法得到:

首先每个单词反转,得到:"eht yks si eulb"

然后整体反转,得到:"blue is sky the"

 

 

代码:

151 反转字符串里的单词

151 反转字符串里的单词

 

结果:

151 反转字符串里的单词

 

代码比较繁琐,主要是花在前后空格处理、中间空格处理上。

最后效果还是不错。