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

https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/

解法一:c++STL

思路:善用c++STL的reverse模板算法.

template<class BidirectionalIterator>
   void reverse(
      BidirectionalIterator _First, 
      BidirectionalIterator _Last
   );
参数:
_First
指向第一个元素的位置的双向迭代器在元素交换的范围。
_Last
指向通过最终元素的位置的双向迭代器在元素交换的范围。
即:反转(first,last-1)区间内的元素顺序.
//cpp
class Solution {
public:
    string reverseWords(string s) {
        for (int i = 0; i < s.length(); i++) {
            if (s[i] != ' ') { //i指向第一个非空格
                int j = i;
                for (; j < s.length() && s[j] != ' '; j++) {} //j指向下一个空格
                reverse(s.begin()+i, s.begin()+j);//反转(i,j-1)之间的元素
                i = j; // 更新i
            }
        }
        return s;
    }
};

解法二:py

将s按空格split成列表words,然后对words每个元素反转存在reverse中。

然后用join函数连接reverse中元素。

class Solution:
    def reverseWords(self, s: str) -> str:        
        words = s.split(" ")
        reverse = []  #每个单词反转的列表
        for word in words:
            word = word[::-1]
            reverse.append(word)
        return " ".join(reverse)  #用空格连接

最后更新于