这是一个 leetcode 问题,我们必须反转字符串。这是问题的链接。 反转字符串中的单词。
这是我想理解的代码片段:
class Solution {
public:
string reverseWords(string s) {
int n=s.length();
reverse(s.begin(), s.end());
s.push_back(' ');
int j=0;
for(int i=0; i<=n; i++){
if(s[i]==' '){
reverse(s.begin()+j, s.begin()+i);
j=i+1;
}
}
s.pop_back();
return s;
}
};
我很期待这个功能是如何工作的。
行
reverse(s.begin() + j, s.begin() + i)
在位置 j
和 i
之间翻转部分字符串中的字符。例如,如果字符串是 "dlrow olleh "
并且我们从 j = 0
反转到 i = 5
,它将把第一个单词 "dlrow"
反转为 "world"
。它通过交换第一个和最后一个字母,然后交换下一对字母,依此类推,直到整个单词被翻转来实现这一点。此后,单词 "dlrow"
变为 "world"
,而字符串的其余部分保持不变。