0x01.问题
给定一个字符串,逐个翻转字符串中的每个单词。
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
输入示例:
" hello world! "
输出示例:
“world! hello”
public String reverseWords(String s)
0x02.要点分析
就简单的作为字符数组来一个个单词的翻转可能有些复杂,代码量也会大不少,我们可以使用Java的API,大大简化代码量。
具体思路如下:
- 去掉字符串的首尾空格,使用
s.trim()
。 - 将每个单词转为
List
集合中的元素,具体的做法是将字符串s
以空格进行分割(正则表达式)再使用Arrays.asList
。 - 将
List
翻转。 - 将
List
中的元素存入字符串,并以空格隔开。
0x03.解决代码
class Solution {
public String reverseWords(String s) {
s=s.trim();
List<String> words=Arrays.asList(s.split("\\s+"));
Collections.reverse(words);
return String.join(" ", words);
}
}
心情日记:
你只要尝试过飞,日后走路时也会仰望天空,因为那是你曾经到过,并渴望回去的地方。
ATFWUS --Writing By 2020–04-10