题目描述
给定一个字符串句子,进行反转,不能申请额外的内存,比如“This is a sentence”,输出就是”sentence a is This”
解题思路
先对每个单词进行反转,结果为 “sihT si a ecnetnes” 然后再对整个句子反转,就是最终结果。
反转不能利用额外的空间,那就使用头尾指针,交换头尾指针的数据即可
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Revert_words(char *p, char *q)
{
while(p < q)
{
int tmp = *p;
*p = *q;
*q = tmp;
p ++;
q --;
}
}
void Revert_string(char *str, int len)
{
char *p = str;
char *q = str;
while(*p != '\0')
{
if(*p == ' ')
{
Revert_words(q,p - 1);
p ++;
q = p;
}
else
p ++;
}
Revert_words(q,p - 1);
Revert_words(str, p - 1);
}
int main(int argc, char const *argv[])
{
char str[] = "This is a dog";
printf("%s \n", str);
Revert_string(str);
printf("%s \n", str);
return 0;
}