15力扣题做题笔记及复盘--151.翻转字符串里的单词(字符串)
151. 颠倒字符串中的单词 - 力扣(LeetCode)
题外话
这道题一开始是按自己的思路去走,发现走不通,看看其他人的解法,其他人的解法是:
解题思路如下:
- 移除多余空格
- 将整个字符串反转
- 将每个单词反转
举个例子,源字符串为:"the sky is blue "
- 移除多余空格 : "the sky is blue"
- 字符串反转:"eulb si yks eht"
- 单词反转:"blue is sky the"
这样我们就完成了翻转字符串里的单词。先局部再总体的思想,这个思想好,后面也有用到的地方。
但是就意味着我要定义三个函数去做,当然作为练习还可以,练习基本功,但到实用性实在是有点过分,所以我没打算在这一点上写,而是写下自己的思路。在自己的思路基础上发现我的错误是少了规避掉最后一个空格。用substring(start,end)去做就完成了。
思路
分割字符串,只要是单词我就拼接,这里的拼接单词是从后王前拼接,在单词拼接之后加上空格,最后输出时规避掉最后一个空格。
代码
class Solution { public String reverseWords(String s) { //根据空格进行切分成多个数组 String[] spi = s.split(" "); StringBuilder sbs = new StringBuilder(); for(int i=spi.length-1;i>=0;i--){ if(!spi[i].isEmpty()){ sbs.append(spi[i]).append(" "); } } String res = sbs.toString(); return res.substring(0,res.length()-1); } }
总结
1、substring()的应用
2、如果这道题要做好的话,可能需要重新编码,而不是我这样写