题目
给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
例:
输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
方法
- result 以列表的形式记录每个单词反转后的字符串,word 记录字符串的单词
- i 指向字符串的首部,length 记录字符串的长度
- 循环直至 i 大于 length,i == length 保证最后一个单词能放入 result
- 若 i 处于合理的范围内且其值不为空格,则表示单词还未结束,将字符放入 word
- 否则单词结束,循环将单词的字符交换位置。单词反转完毕,将其放入 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)