这道题题目为:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
解题思路分为两步:
(1)首先翻转整个句子,此时单词内的字符顺序也被翻转。
(2)然后翻转每个单词中英文的顺序。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Reverse(char *begin, char *end)
{
if (begin == NULL || end == NULL)
return;
while (begin < end)
{
char temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
}
char * ReserveSentence(char *str)
{
if (str == NULL)
return NULL;
char *begin = str;
char *end = str;
while (*end != '\0')
end++;
end--;
//反转整个句子
Reverse(begin, end);
//反转整个单词
begin = end = str;
while (*begin != '\0')
{
if (*begin == ' ')
{
begin++;
end++;
}
else if (*end == ' ' || *end == '\0')
{
Reverse(begin, --end);
begin = ++end;
}
else
{
end++;
}
}
return str;
}