面试题:按单词逆转字符串(2010/10/09)

代码

#include
<iostream>
#include
<utility>
using namespace std;

//先逆转整个字符串,然后再逐单词逆转
char * reveser_str(char *beg,char *end=NULL)
{
if (end==NULL)
{
end
=beg;
while(*end!='\0')
{
++end;
}
--end;
}
char *p=beg;
while(p<end)
{
swap(
*p,*end);
++p;
--end;
}
return beg;
}
char* reveser_by_word(char *str)
{
reveser_str(str);
char *beg=str,*end=str;
while(*end!='\0')
{
if (*end==' ')
{
reveser_str(beg,end
-1);
beg
= end+1;
}
++end;
}
reveser_str(beg,end
-1);
return str;
}
int main()
{
char str[256];
while (cin.getline(str,sizeof(str)))
{
cout
<<reveser_by_word(str)<<endl;
}
return 0;
}
原文地址:https://www.cnblogs.com/SammyLan/p/1880032.html