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、如果这道题要做好的话,可能需要重新编码,而不是我这样写

posted @ 2022-05-25 23:28  jason饼干大怪兽  阅读(32)  评论(0)    收藏  举报