1. 程式人生 > 其它 >LeetCode: 557. 反轉字串中的單詞 III

LeetCode: 557. 反轉字串中的單詞 III

給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

示例:

輸入:"Let's take LeetCode contest"
輸出:"s'teL ekat edoCteeL tsetnoc"

提示:

在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。

Python版:

class Solution:
    def reverseWords(self, s: str) -> str:
        ans = []
        for word in s.split(' '):
            ans.append(word[::
-1]) return ' '.join(ans)

Java版:

使用額外空間:開闢一個新字串。然後從頭到尾遍歷原字串,直到找到空格為止,此時找到了一個單詞,並能得到單詞的起止位置。隨後,根據單詞的起止位置,可以將該單詞逆序放到新字串當中。如此迴圈多次,直到遍歷完原字串,就能得到翻轉後的結果。

class Solution {
    public String reverseWords(String s) {
        StringBuffer ans = new StringBuffer();
        int length = s.length();
        
int i = 0; while (i < length) { int start = i; while (i < length && s.charAt(i) != ' ') { i++; } for (int p = start; p < i; p++) { ans.append(s.charAt(start + i - 1 - p)); }
while (i < length && s.charAt(i) == ' ') { i++; ans.append(' '); } } return ans.toString(); } }

參考資料:

557. 反轉字串中的單詞 III - 力扣(LeetCode) (leetcode-cn.com)

557. 反轉字串中的單詞 III 題解 - 力扣(LeetCode) (leetcode-cn.com)