基本思想是 将整个字符串反转,再将字符串中的每个单词反转
#include <iostream>
using namespace std;
int reverseStr(char *str,int begin,int end)
{
char tmp;
if(str==NULL)
{
return 0;
}
if(begin<end)
{
tmp=str[begin];
str[begin]=str[end];
str[end]=tmp;
reverseStr(str,begin+1,end-1);
}
return 1;
}
int reverseWords(char *str)
{
int wordBegin=0,wordEnd=0,len=0;
if(str==NULL||*str=='\0')
{
return 0;
}
len=strlen(str);
reverseStr(str,0,len-1);//将全部字符串反转
while(wordEnd<len)
{
if(str[wordEnd]!=' ')
{
wordBegin=wordEnd;
while(str[wordEnd]!=' '&&str[wordEnd]!='\n'&&wordEnd<len)
{
wordEnd++;
}
wordEnd--;
reverseStr(str,wordBegin,wordEnd);//将里面的每一个单词反转
}
wordEnd++;
}
return 1;
}
int main()
{
char str[]="I am student!";
cout<<str<<endl;
reverseWords(str);
cout<<str<<endl;
return 0;
}