剑指 Offer 58 - I. 翻转单词顺序(简单)

剑指 Offer 58 - I. 翻转单词顺序(简单)_第1张图片
思路一:
双指针法实现
思想是利用双指针来定位每个单词;
即两个指针初始化时都指向字符串的末尾,然后移动首指针来定位最后一个单词的开始位置(即定位到空格即可);
之后利用首尾指针即可取出当前的单词;
然后移动首指针跨过空格,找到下一个单词的末尾,之后移动尾指针,使其等于首指针,两个指针都定位到下一个单词的末尾,之后移动首指针,找到这个单词的开始,然后依据首尾指针获取单词即可。’

代码如下:

class Solution:
    def reverseWords(self, s):

        s = s.strip()

        #对字符串进行分割

        #利用双指针定位单词
        i = len(s) - 1
        j = len(s) - 1


        result = ''
        while i >= 0:

            while s[i] != ' ' and i >= 0:

                i -= 1

            result += s[i + 1:j + 1]
            if i >= 0:
                result += ' '

            #让i跨过空格,之后开始计算
            while s[i] == ' ':

                i -= 1

            j = i
        return result

你可能感兴趣的:(leetcode)