class Solution {
public:
void reverse(string& s, int start, int end) {// 反转,区间,左闭右闭
for (int i = start,j = end; i < j; i++, j--)
{
swap(s[i], s[j]);
}
}
void removeExtraSpaces(string& s) {
int slow = 0;// 慢指针,用于控制删除空格后的数组
for (int i = 0; i < s.size(); i++)
{
if (s[i] != ' ') { // 如果不是空格,只针对非空格元素进行处理
if (slow != 0) s[slow++] = ' ';// 不是第一个单词的时候,需要手动添加一个空格
while (i < s.size() && s[i] != ' ') {// 补上该单词,遇到空格则说明该单词结束
s[slow++] = s[i++];
}
}
}
s.resize(slow);//移除多余的空格
}
string reverseWords(string& s){
removeExtraSpaces(s);// 移除字符串s中多余的空格
reverse(s, 0, s.size() - 1);
int start = 0;
for (int i = 0; i <= s.size(); i++)
{
if (i == s.size() || s[i] == ' ') {//一个单词结束,或者整个字符串结束
reverse(s, start, i - 1); // 反转,区间,左闭右闭
start = i + 1;
}
}
return s;
}
};
字符串-反转字符串里的单词-移除空格+反转
最新推荐文章于 2024-07-22 14:15:06 发布