翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。
说明:
无空格字符构成一个单词 。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 1:
输入:“the sky is blue”
输出:“blue is sky the”
示例 2:
输入:" hello world! "
输出:“world! hello”
解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入:“a good example”
输出:“example good a”
解释:如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
提示:
1 <= s.length <= 104
s 包含英文大小写字母、数字和空格 ’ ’
s 中 至少存在一个 单词
进阶:
请尝试使用 O(1) 额外空间复杂度的原地解法。
题目来源:力扣(LeetCode)
思路
- 通过split()方法将给定的字符串进行分割,并存到字符串数组中;
- 将字符串数组倒序遍历;
知识补充
- String的split()方法支持正则表达式;
- 正则表达式\s表示匹配任何空白字符,+表示匹配一次或多次。
- String的trim()方法返回字符串的副本,忽略前导空白和尾部空白。
代码
public String reverseWords(String s) {
String[] strs = s.trim().split("\\s+");
String answer = "";
for(int i=strs.length-1;i>=0;i--){
if(i==0)
answer += (strs[i].trim());
else
answer += (strs[i].trim()+" ");
}
return answer;
}