LeetCode151-翻转字符串里的单词

方法1
1.思路:
2.代码:
class Solution {
    public String reverseWords(String s) {
        //去两头空格
        s = s.trim();
        //使用空格分割
        String[] str = s.split(" ");
        String res = "";
        for(int i = str.length - 1; i >= 0; i--){
            //在分割后的数组中,元素只可能为""或者有值
            //如果为"",跳过
            if("".equals(str[i]))
                continue;

            //用temp保存中间的字符串,从最后一个数组元素开始
            String temp = "";
            for (int j = 0; j < str[i].length(); j++){
                temp += str[i].substring(j, j+1);
            }
            //如果不是第一个字符串,拼接到结果时加上空格,否则直接拼接
            if(i > 0){
                res = res + temp + " ";
            }else {
                res = res + temp;
            }
        }
        return res;
    }
}
3.复杂度分析:时间0(mn),m为分割后的数组长度,n为数组元素平均长度。空间0(mn),每次拼接都会创建新对象。
方法2:
1.思路:用string api代替手工翻转和连接。分割采用s.split("\s+"),其中\s表示回车,空格,换行等空白符。+表示任意个。String.join是以分隔符连接集合成员,再去掉最后一个分隔符
2.代码:
class Solution {
    public String reverseWords(String s) {
        //去两头空格
        s = s.trim();
        List<String>list = Arrays.asList(s.split("\\s+"));
        Collections.reverse(list);
        return String.join(" ", list);
    }
}
3.复杂度分析:时间0(n),空间0(n)。n为串的长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值