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 1:

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.

public String reverseWords(String s) {
    StringBuilder sb = new StringBuilder(s);
    int i = 0, j = 0;
    while(i < s.length()) {
        while(i < s.length() && s.charAt(i) == ' ') i++;
        j = i;
        while(j < s.length() && s.charAt(j) != ' ') j++;
        reverse(sb, i, j-1);
        i = j;
    }
    return sb.toString();

}

public void reverse(StringBuilder sb, int i, int j) {
    while(i < j) {
        char c = sb.charAt(i);
        sb.setCharAt(i, sb.charAt(j));
        sb.setCharAt(j,c);
        i++;
        j--;
    }
}