题目:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。
例子:
输入:I am a student
输出:student a am I
在线oj:
class Solution
{
private:
void Reverse(char* pBegin, char*pEnd)
{
assert(pBegin != NULL&&pEnd != NULL);
while (pBegin < pEnd)
{
swap(*pBegin, *pEnd);
++pBegin;
--pEnd;
}
}
public:
string Reverseofstring(string str)
{
if (str.empty())
return str;
size_t size = str.size();
char* pBegin = &(str.front());
char* pEnd = pBegin + size - 1;
Reverse(pBegin, pEnd);
pBegin = pEnd = &(str.front());
for (int i = 0; i < size; i++)
{
if (*pBegin == ' ')
{
pBegin++;
pEnd++;
}
else if (*pEnd == ' ' || *pEnd == '\0')
{
Reverse(pBegin, --pEnd);
pBegin = ++pEnd;
}
else
{
++pEnd;
}
}
return str;
}
};