151. 颠倒字符串中的单词

"本文讨论了如何在Java中反转字符串中的单词顺序,同时处理多余的空格。通过使用split()函数结合正则表达式,实现对字符串的分割,然后使用StringBuilder进行逆序拼接。在处理过程中,遇到的问题包括空格数量不一和首尾空格的处理,最终通过trim()和split("\s+")解决了这些问题。虽然代码能够正确运行,但效率可能不高,因为没有利用内置的reverse()方法。"
摘要由CSDN通过智能技术生成

题目

给你一个字符串 s ,颠倒字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-words-in-a-string
在这里插入图片描述
首先这个就是把单词的顺序给翻转,比较简单的办法就是split函数把它们弄到字符数组里,再考虑调转顺序
之后代码是这样的

class Solution {
    public String reverseWords(String s) {
        String[] s1 = s.split(" ");
        StringBuffer sb = new StringBuffer();
        for(int i =s1.length-1;i>=0;i--){
            sb.append(s1[i]);
            if(i==0){
              break;
            }
            sb.append(" ");
        }
        String s2 = sb.toString();
        return s2;
    }
}

但运行时出现了这个问题
在这里插入图片描述
这里发现问题是用一个空格作为分割,但有的是两个空格,去掉一个还有一个空格,而输出要求的是有只能有单个空格
那怎么处理呢?

    String[] s1 = s.split(" +");

这么改,就可以匹配多个空格·,但之后又有一个问题:
在这里插入图片描述
这种头尾有空格的,就会无法解决,会在尾部带一个空格
于是又改为这句

 String[] s1 = s.trim().split(" +");

在这里插入图片描述
运行通过,但性能较差,估计是因为翻转的方法是自己写的,而实际可以调reverse方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值