例如:“aab bbb cad"变成"cad bbb aab”;
思路,先反转成"dac bbb baa",然后在反转单词,变成"cad bbb aab"
#include<stdio.h>
#include<stdlib.h>
void reverse(char* p,char*q)
{
char temp;
if (p == NULL || q == NULL)
return;
while (p<q)
{
temp = *p;
*p = *q;
*q = temp;
q--;
p++;
}
}
char* reverseSentence(char* str)
{
if (str == NULL)
{
return NULL;
}
char* p;
char* q;
p = q = str;
while (*q != '\0')
q++;
q--;
reverse(p, q);
p = q = str;
while (*p != '\0')
{
if (*p==' ')
{
p++;
q++;
}
else if (*q == '\0' || *q == ' ')
{
reverse(p, --q);
p = ++q;
}
else
{
q++;
}
}
return str;
}
int main()
{
char str[] ="aaa bbb nn";
//char str[] = "aaa";
//char str[] = "";
//char str[] = " ";
printf("%s\n", reverseSentence(str));
getchar();
return 0;
}