给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: "the sky is blue"
输出: "blue is sky the"
- 1
- 2
- 3
今天刷这道算法题的时候,感触良多。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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
知识点
()方法用于删除字符串的头尾空白符。
()将数组转成list,是JDK中包中Arrays类的静态方法
3.split("\s+") 用于分割字符串,返回的是一个数组。
这里的\s表示空格,回车,换行等空白符,
+好表示一个或多个的意思。
类包含对集合进行操作或返回集合的静态方法。
这里的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个元素整体移到后面。