[LeetCode] Problem 557 - Reverse Words in a String III

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example

Input: “Let’s take LeetCode contest”

Output: “s’teL ekat edoCteeL tsetnoc”

Note

In the string, each word is separated by single space and there will not be any extra space in the string.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public String reverseWords(String s) {
char[] str = s.toCharArray();

for (int i = 0; i < str.length;) {
int j = i + 1;

for (; j < str.length; j++) {
if (str[j] == ' ')
break;
}

reverse(str, i, j - 1);

i = j + 1;
}

return String.valueOf(str);
}

private void reverse(char[] str, int start, int end) {
while (start < end) {
char temp = str[end];
str[end] = str[start];
str[start] = temp;

start++;
end--;
}
}