解法一(使用额外空间):
string reverseWords(string s) {
string strNew = "";
for(int i = 0; i < s.length();)
{
for(int j = i; j <= s.length(); ++j)
{
if(' ' == s[j] || j == s.length())
{
for(int index = 0; index < (j - i); ++index)
strNew += s[j - index - 1]; // 减一的目的是为了去除多算的空格
i = j + 1; // 标记为空格后的位置
break;
}
}
if(i <= s.length())
strNew += " ";
}
return strNew;
}
解法二(原地解法):
string reverseWords(string s) {
int iLeft = 0, iRight = 0, i = 0;
while(i < s.length())
{
iLeft = i;
iRight = i;
while(iRight < s.length() && ' ' != s[iRight])
++iRight;
i = iRight + 1;
--iRight;
while(iLeft < iRight)
{
swap(s[iRight], s[iLeft]);
++iLeft;
--iRight;
}
}
return s;
}