151.翻转字符串里的单词

题目:

在这里插入图片描述

思路:

①切割字符串
首先要忽略字符串首尾的空格
str = str.trim();
其次按(一个或多个)空格对字符串进行切割
String[] strs = str.split("\s+");

②对字符串数组进行翻转

③单词间用空格分割并输出

代码:

import java.util.Collections;
class Solution {
    public static String reverseWords(String s) {
        s = s.trim();        
        String[] strs = s.split("\\s+");//分割一个或多个空格
        int len = strs.length;

        for(int i = 0; i < len/2; i++){
            String temp = strs[i];
            strs[i] = strs[len-1-i];
            strs[len-1-i] = temp;
        }
        StringBuffer sb = new StringBuffer();

        for(int i = 0; i < len; i++){
            if(i < len - 1){
					sb.append(strs[i]+" ");
			}
				
			else if (i == len - 1)
				sb.append(strs[i]);
        }
        String ans = sb.toString();
        return ans;
    }
}

复杂度分析:

时间复杂度:O(N), N为字符串长度
空间复杂的:O(N)

官方做法:

class Solution {
    public String reverseWords(String s) {
        // 除去开头和末尾的空白字符
        s = s.trim();
        // 正则匹配连续的空白字符作为分隔符分割
        List<String> wordList = Arrays.asList(s.split("\\s+"));
        Collections.reverse(wordList);
        return String.join(" ", wordList);
    }
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string/solution/fan-zhuan-zi-fu-chuan-li-de-dan-ci-by-leetcode-sol/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

TIPS:

数组反转:
① 把array转为list : List<T> list = Arrays.asList(array)
② 反转list: Collections.reverse(list)

字符串拼接:

String.join(" ", list)
public static String join(CharSequence delimiter,
                          CharSequence... elements)
返回一个由 CharSequence elements副本的新字符串连接在一起的一份指定的 delimiter。 
For example, 

     String message = String.join("-", "Java", "is", "cool");
     // message returned is: "Java-is-cool"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值