Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
/*
*解题思路:
*1.去掉字符串收尾的空格,并把单词间的多个空格用一个空格替换掉;
*2.先翻转每个单词,再翻转整个字符串。*/
public class Solution {
private void reverseWord( char[] arr, int start, int end ){
char temp;
while( start<end ){
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
public String reverseWords(String s) {
String str = s.trim().replaceAll("\\s+", " ");
int len = str.length();
char[] arr_str = str.toCharArray();
int start = 0;
int end = 0;
while( start<len ){
end = start;
while( end<len && arr_str[end]!=' ' ){
end++;
}
reverseWord( arr_str, start, end-1 );
start = end+1;
}
reverseWord( arr_str, 0, len-1 );
return new String( arr_str );
}
}