【題目描述】
Given an input string, reverse the string word by word.
給定一個字符串,逐個翻轉字符串中的每個單詞。
【題目鏈接】
http://www.lintcode.com/en/problem/reverse-words-in-a-string/
【題目解析】
這道題讓我們翻轉字符串中的單詞,題目中給了我們寫特別說明,如果單詞之間遇到多個空格,只能返回一個,而且首尾不能有單詞,並且對C語言程序員要求空間複雜度爲O(1),所以我們只能對原字符串s之間做修改,而不能聲明新的字符串。那麼我們如何翻轉字符串中的單詞呢,我們的做法是,先整個字符串整體翻轉一次,然後再分別翻轉每一個單詞(或者先分別翻轉每一個單詞,然後再整個字符串整體翻轉一次),此時就能得到我們需要的結果了。那麼這裏我們需要定義一些變量來輔助我們解題,storeIndex表示當前存儲到的位置,n爲字符串的長度。我們先給整個字符串反轉一下,然後我們開始循環,遇到空格直接跳過,如果是非空格字符,我們此時看storeIndex是否爲0,爲0的話表示第一個單詞,不用增加空格;如果不爲0,說明不是第一個單詞,需要在單詞中間加一個空格,然後我們要找到下一個單詞的結束位置我們用一個while循環來找下一個爲空格的位置,在此過程中繼續覆蓋原字符串,找到結束位置了,下面就來翻轉這個單詞,然後更新i爲結尾位置,最後遍歷結束,我們剪裁原字符串到storeIndex位置,就可以得到我們需要的結果
【參考答案】
www.jiuzhang.com/solutions/reverse-words-in-a-string/