Lintcode53 Reverse Words in a String solution 題解

【題目描述】

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章