For C programmers: Try to solve it in-place in O(1) space.
看到這句話,那就在原位置上上替換好啦亦镶。
class Solution {
public:
void reverseWords(string &s)
{
if (s.empty())
{
return;
}
for (int i = 0; i < s.size() - 1; ++i)
{
if (s[i] == ' ' && s[i + 1] == ' ')
{
s.erase(s.begin() + i + 1);
--i;
}
}
if (!s.empty() && s.front() == ' ')
{
s.erase(s.begin());
}
if (!s.empty() && s.back() == ' ')
{
s.erase(s.end() - 1);
}
if (s.empty())
{
return;
}
reverse(s.begin(), s.end());
int posRec = 0;
for (int i = 0; i < s.size(); i = posRec)
{
int j = i;
while (j < s.size() && s[j] != ' ')
{
++j;
}
posRec = j + 1;
--j;
while (i < j)
{
swap(s[i++], s[j--]);
}
}
}
};
第一次提交時(shí)候日月,第一個(gè)判空條件沒有寫,報(bào)錯(cuò)缤骨。
因?yàn)閟.size() - 1 != -1,而是4294967295