# LC 186 Reverse Words in a String II(M)

Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.

The input string does not contain leading or trailing spaces and the words are always separated by a single space.

For example, Given s = "the sky is blue", return "blue is sky the".

Could you do it **in-place** without allocating extra space?

**边界条件**

## 解题思路

通过两遍翻转，先单个字串翻转，然后全部字符串一起反正 两次翻转保证每个字符串的顺序正常，

```java
public void reverseWords(char[] s) {
    int i=0;
    //  每个字单独翻转
    for(int j=0; j<s.length; j++){
        if(s[j]==' '){
            reverse(s, i, j-1);        
            i=j+1;
        }
    }
    // 最后一个字单独翻转
    reverse(s, i, s.length-1);

    // 整个字符串全部翻转
    reverse(s, 0, s.length-1);
}

public void reverse(char[] s, int i, int j){
    while(i<j){
        char temp = s[i];
        s[i]=s[j];
        s[j]=temp;
        i++;
        j--;
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tonyding.gitbook.io/algorithm/lc-186-reverse-words-in-a-string-ii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
