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) #用空格连接
最后更新于