LeetCode 557. 反转字符串中的单词 III

题目

给定一个字符串 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)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容