當前位置:
首頁 > 知識 > 代碼分析:翻轉字元串里的單詞

代碼分析:翻轉字元串里的單詞

翻轉字元串里的單詞

Given an input string, reverse the string word by word.

示例 1:

輸入: the sky is blue

輸出: blue is sky the

示例 2:

輸入: hello world!

輸出: world! hello

解釋: 輸入字元串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。

示例 3:

輸入: a good example

輸出: example good a

解釋: 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。

說明:

無空格字元構成一個單詞。

輸入字元串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。

如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。

進階:

請選用 C 語言的用戶嘗試使用 O(1) 額外空間複雜度的原地解法。

Note:

A word is defined as a sequence of non-space characters.

Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.

You need to reduce multiple spaces between two words to a single space in the reversed string.

Follow up:

For C programmers, try to solve it in-place in O(1) extra space.

解題思路:

Java 字元串不支持運算符重載,無法用原地解法。 我們將字元串轉為字元型數組並用兩個指針來解這道題。指針 i 作為原字元串轉為字元數組的索引,從右向左移。指針 j 作為新字元數組索引,從左向右賦值得到原數組 count 長度的字元。count記錄遇到的字母數量,每次遇到 空格 字元,新數組得到從該空格字元 向右 count 個字元並刷新count 計數。

Java:

為了考慮性能,轉成了多個判斷,所以有些繁瑣。最終運行:Your runtime beats 99.91 % of java submissions

Python3:

python完全可以實現Java的思路,不再復現。這裡利用函數投機取巧:

split() ,它可以把傳入字元串剔除空格後返回 所有單詞的數組

join() ,它可以指定一個數組以特定字元為間隔,拼接成一個字元串

加上 [::-1] 反轉數組,一行代碼既可實現該題目要求

』 abc def 』 原字元串

[『abc』 , 『def』] 剔除空格返回String型單詞數組

[『def』 , 『abc』] 切片反轉數組

『def abc』 拼接成字元串

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

如何寫出 沒有 BUG 的代碼
MySQL存儲引擎、MyISAM、InnoDB

TAG:千鋒JAVA開發學院 |