題目
給定一個字符串 s 杈女,你需要反轉(zhuǎn)字符串中每個單詞的字符順序夏漱,同時仍保留空格和單詞的初始順序豪诲。
例:
輸入:s = "Let's take LeetCode contest"
輸出:"s'teL ekat edoCteeL tsetnoc"
方法
- result 以列表的形式記錄每個單詞反轉(zhuǎn)后的字符串,word 記錄字符串的單詞
- i 指向字符串的首部挂绰,length 記錄字符串的長度
- 循環(huán)直至 i 大于 length屎篱,i == length 保證最后一個單詞能放入 result
- 若 i 處于合理的范圍內(nèi)且其值不為空格,則表示單詞還未結(jié)束,將字符放入 word
- 否則單詞結(jié)束交播,循環(huán)將單詞的字符交換位置专肪。單詞反轉(zhuǎn)完畢,將其放入 result
- 將 i 移至下一個位置
class Solution(object):
def reverseWords(self, s):
result, word = [], []
i, length = 0, len(s)
while i <= length:
if i < length and s[i] != ' ':
word.append(s[i])
else:
left, right = 0, len(word)-1
while left < right:
word[left], word[right] = word[right], word[left]
left += 1
right -= 1
result.append(''.join(word))
word = []
i += 1
return ' '.join(result)