给定一个字符串,逐个翻转字符串中的每个单词。(java)

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:
输入: "the sky is blue"
输出: "blue is sky the"

今天刷这道算法题的时候,感触良多。java 4行代码,每一行都很有价值。进阶之路还很漫长,加油吧!!!

代码

public class ReverseWords {

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

知识点

1.trim()方法用于删除字符串的头尾空白符。

2.asList ()将数组转成list,是JDK中java.util包中Arrays类的静态方法

3.split("\s+") 用于分割字符串,返回的是一个数组。
这里的\s表示空格,回车,换行等空白符,
+好表示一个或多个的意思。

4.Collections类包含对集合进行操作或返回集合的静态方法。
这里的reverse()方法是反转字符串。

5.String.join():拼接字符串。 参数为2个,第一个参数为拼接符号,第二个参数为数组和集合.

附:
Collections提供以下方法对List进行排序操作:
void reverse(List list):反转
void shuffle(List list),随机排序
void sort(List list),按自然排序的升序排序
void sort(List list, Comparator c);定制排序,由Comparator控制排序逻辑
void swap(List list, int i , int j),交换两个索引位置的元素
void rotate(List list, int distance),旋转。
当distance为正数时,将list后distance个元素整体移到前面。
当distance为负数时,将 list的前distance个元素整体移到后面。

你可能感兴趣的:(java算法)