LeetCode: 557. 反轉字串中的單詞 III
阿新 • • 發佈:2021-07-20
給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。
示例:
輸入:"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(); } }
參考資料: